home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / SourceAGA / PictureFade.s < prev    next >
Text File  |  1994-06-27  |  57KB  |  2,797 lines

  1. ;picturefade
  2.  
  3.  
  4. rout            ;when this is off, the routine-file will be
  5.             ;assembled, on=testing
  6.             
  7. ;debug            ;when this is on, colors in the background will
  8.             ;show how much time the routine needs.
  9.  
  10. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  11.  
  12. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  13.  
  14. routinemode    equ    100*256+17    ;the routinemode !
  15.  
  16.  
  17. ; VideoTracker AGA developer source 25-12-93
  18. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  19. ; wich makes low-resolution overscan a bit ugly.
  20. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  21.  
  22. ; the first part of the source handles the things that are necessary to
  23. ; show the picture/copper and playing of the routine.
  24. ; the part between the "***" lines is the routine-source.
  25. ; at the bottom of the file, there are the necessary incbin-files who
  26. ; are needed to test the routine.
  27. ; these are saved with "save effect" in videotracker. they are raw
  28. ; data files which can be fonts,pictures,landscapes,vectorobjects
  29. ; etcetra.
  30. ; the incbin-files are put in the "variables" table, in the routine
  31. ; player-handler
  32. ; the place where it's done can be found by searching for "!!!"
  33.  
  34.     opt    a+    ;devpac 3 optimize
  35.     opt    o+
  36.  
  37. vew_wid    equ    48
  38. vew_hgt    equ    290
  39. win_hgt    equ    117
  40. win_str    equ    $1a
  41.  
  42.         ifd    ocs
  43. pic_wid        equ    4        ;wide in bytes
  44. pic_hgt        equ    6        ;hoogte
  45. pic_dpt        equ    8        ;number planes
  46. pic_ani        equ    10        ;aantal effes (anim)
  47. pic_vew        equ    12        ;viewmode
  48. pic_cycstr    equ    14        ;cycle start (*4)
  49. pic_cycend    equ    15        ;cycle end (*4)
  50. pic_cycspd    equ    16        ;cycle speed (*4)
  51. pic_cycadd    equ    17        ;cycle add (*4)
  52. pic_palnum    equ    30        ;aantal kleuren
  53. pic_pal        equ    32        ;palette start
  54. pic_palsiz    equ    256*2        ;vaste palette size
  55. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  56.         endc
  57.         
  58.         ifnd    ocs
  59. pic_wid        equ    4        ;wide in bytes
  60. pic_hgt        equ    6        ;hoogte
  61. pic_dpt        equ    8        ;number planes
  62. pic_ani        equ    10        ;aantal effes (anim)
  63. pic_vew        equ    12        ;viewmode
  64. pic_cycstr    equ    14        ;cycle start (*8)
  65. pic_cycend    equ    15        ;cycle end (*8)
  66. pic_cycspd    equ    16        ;cycle speed (*8)
  67. pic_cycadd    equ    17        ;cycle add (*8)
  68. pic_widmod    equ    46        ;animation-width modulo
  69. pic_future    equ    50        ;free future space
  70. pic_palnum    equ    62        ;aantal kleuren
  71. pic_pal        equ    64        ;palette start
  72. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  73. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  74.         endc
  75.         
  76. var_len        equ    $300        ;lengte vartabel
  77.  
  78. var__GfxBase    equ    $000        ;graphics lib
  79. var_pic1    equ    $004        ;current picture
  80. var_anispd1    equ    $008        ;animspeed
  81. var_anitel1    equ    $00c        ;animcount
  82. var_cprbck    equ    $010        ;copperback
  83. var_bck        equ    $014        ;background
  84. var_pic2    equ    $018        ;current picture
  85. var_ntsc    equ    $01c        ;ntsc/pal frequence
  86. var_lnd        equ    $020        ;landscape
  87. var_anilop1    equ    $024
  88. var_rottrg    equ    $028        ;effect trigger
  89. var_txt1    equ    $040        ;text
  90. var_txt16    equ    15*4+var_txt1
  91. var_vec1    equ    $080        ;vectors
  92. var_vec16    equ    15*4+var_vec1
  93. var_fon1    equ    $0c0        ;fonts
  94. var_fon16    equ    15*4+var_fon1
  95. var_cols1    equ    $100        ;colorsets
  96. var_cols16    equ    15*4+var_cols1
  97. var_obj1    equ    $180        ;objects
  98. var_obj16    equ    15*4+var_obj1
  99.  
  100.     ifd    rout
  101.     ;videotracker routine-test
  102.  
  103.     incdir    "w:include/"
  104.     include    "exec/types.i"
  105.     include    "graphics/gfxbase.i"
  106.     include    "lvo/graphics_lib.i"
  107.     incdir    'videotracker:effect/'
  108.  
  109.     SECTION    1,CODE_C
  110. tus
  111.     lea    var,a0
  112.  
  113. ;    move.l    #rotincobj,var_obj1(a0)    ;incbinfile !!!
  114. ;    move.l    #rotincbck,var_bck(a0)    ;incbinfile !!!
  115. ;    move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  116. ;    move.l    #rotsrc,curpal1        ;palette !!!
  117. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  118.  
  119.     bsr    paltabres
  120.     move.l    #rotincpic1,curpic1    ;picture !!!
  121.     move.l    #rotincpic1,curpal1    ;picture !!!
  122.     bsr    grap
  123.     bsr    grac
  124.     move.l    #rotincpic2,curpic1    ;picture !!!
  125.     move.l    #rotincpic2,curpal1    ;picture !!!
  126.     move.l    #rotincpic1,curpic2    ;picture !!!
  127.     move.l    #rotincpic1,curpal2    ;picture !!!
  128.     bsr    grap
  129.     bsr    grac
  130.     
  131.     move.l    ($4).w,a6
  132.     sub.l    a1,a1
  133.     jsr    -$126(a6)        ;findtask
  134.     move.l    d0,curtsk
  135.     move.l    d0,a0
  136.     move.l    $b8(a0),tskpri
  137.  
  138.     lea    dosnam,a1        ;doslib openen
  139.     moveq.l    #0,d0
  140.     move.l    (4).w,a6
  141.     jsr    -408(a6)        ;openlib
  142.     move.l    d0,doslib
  143.  
  144.     bsr.s    label5            ;videotracker opstarten
  145.     
  146.     move.l    curtsk,a0
  147.     move.l    tskpri,$b8(a0)
  148.     move.l    ($4).w,a6
  149.     jsr    -$84(a6)        ;forbid
  150.  
  151.     move.l    doslib,a1
  152.     move.l    (4).w,a6
  153.     jsr    -414(a6)        ;closelib
  154.  
  155.     moveq.l    #0,d0
  156.     rts
  157.     
  158. label5
  159.     move.l    (4).w,a6        ;workbench gedoe
  160.  
  161.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  162.  
  163.     ifd    ntsctest
  164.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  165.     endc
  166.  
  167.     cmp.b    #50,ntscmode        ;ntsc ?
  168.     beq.s    str.ntsc
  169.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  170. str.ntsc
  171.  
  172.     lea    cprjmp,a2        ;copjmp zetten !
  173.     move.l    #cprbck-8,d0
  174.     move.w    d0,6(a2)
  175.     swap    d0
  176.     move.w    d0,2(a2)
  177.  
  178.     lea    cprbck-8,a2        ;copstr zetten !
  179.     move.l    #cpr,d0
  180.     move.w    d0,6(a2)
  181.     swap    d0
  182.     move.w    d0,2(a2)
  183.  
  184.     bsr    cprsprrem        ;sprites legen
  185.  
  186.     lea    gfxnam,a1        ;graphics lib openen
  187.     move.l    (4).w,a6
  188.     jsr    -408(a6)        ;openlib
  189.     move.l    d0,a6
  190.     move.l    d0,gfxlib
  191.     move.l    38(a6),oldcprlist
  192.  
  193.     bset    #1,$bfe001
  194.     bsr    copbuf            ;copper vullen
  195.  
  196.     bsr    sysoff
  197.  
  198. gadrun
  199.     btst    #6,($bfe001).l
  200.     bne    gadrun
  201.  
  202. scrend
  203. scrend.play
  204.     bsr    syson
  205.  
  206.     move.l    gfxlib,a1
  207.     move.l    (4).w,a6
  208.     jsr    -414(a6)        ;closelib
  209.  
  210. scrend.qb
  211.     moveq.l    #0,d0    
  212.     rts
  213.     
  214.     ;vertical blank interrupt, no blits.
  215.     ;handles counters,interlace,sprite
  216.     ;level 3
  217.  
  218. intvb
  219.     bra.s    intvb.cnt
  220.     dc.l    'VIDU'
  221.     dc.l    'LOOP'
  222. intvb.cnt
  223.     movem.l    d0-d7/a0-a6,-(sp)
  224.     lea    ($dff000).l,a6
  225.  
  226.     move.w    $01e(a6),d0
  227.     btst    #5,d0            ;vblank ?
  228.     bne.s    intvb.vb
  229.  
  230.     bra.s    intcop.end
  231.  
  232. intvb.vb
  233.     bsr    grap
  234.     bsr    palctr            ;palette zetten
  235.     bsr.s    copbuf            ;copper vullen
  236.     
  237. intvb.end
  238.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  239.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  240.     rte
  241.  
  242. intcop.end
  243.     movem.l    (sp)+,d0-d7/a0-a6
  244.     move.l    intvbold,-(sp)
  245.     rts
  246.  
  247.     ;transmission buffer empty routine, BLIT !
  248.     ;handles routines,animations
  249.     
  250. inttbe                    ;tbe interrupt
  251.     movem.l    d0-d7/a0-a6,-(sp)
  252.     lea    ($dff000).l,a6
  253.  
  254.     move.w    $01e(a6),d0
  255.     btst    #0,d0            ;no tbe ?
  256.     beq.s    intdskblk
  257.  
  258.  
  259.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  260.     beq.s    inttbe.cop
  261.     btst    #2,($dff016).l
  262.     beq.s    inttbe.cop
  263.  
  264.     ifd    debug
  265.     move.w    #$700,$dff180
  266.     endc
  267.     
  268.     bsr    rotply            ;routineplayer BLIT !
  269.     bsr.s    copbuf            ;copper vullen
  270.  
  271.     ifd    debug
  272.     move.w    #$070,$dff180
  273.     endc
  274.     
  275. inttbe.cop
  276.  
  277. inttbe.end
  278.     move.w    #$0001,$09c(a6)
  279.     movem.l    (sp)+,d0-d7/a0-a6
  280.     rte
  281.  
  282. intdskblk
  283.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  284.     movem.l    (sp)+,d0-d7/a0-a6
  285.     move.l    inttbeold,-(sp)
  286.     rts
  287.  
  288.  
  289.     ;moves the copperbuffer to the copperlist
  290.     ;sort of double buffering
  291.     
  292. copbuf
  293.     movem.l    d0-d7/a0-a6,-(sp)
  294.  
  295.     lea    ($dff000).l,a6
  296.  
  297. copbuf.novb                ;copperchange overslaan
  298.     moveq.l    #0,d0
  299.     move.b    $005(a6),d0
  300.     lsl.w    #8,d0
  301.     moveq.l    #0,d1
  302.     move.b    $006(a6),d1
  303.     add.w    d1,d0
  304.  
  305.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  306.     blt    copbuf.novb
  307.  
  308.     cmp.b    #50,ntscmode
  309.     beq.s    copbuf.pal
  310.     cmp.w    #$133-72-8,d0        ;ntsc grens
  311.     bge    copbuf.novb
  312.     bra.s    copbuf.cont
  313. copbuf.pal
  314.     cmp.w    #$133-8,d0        ;pal grens
  315.     bge    copbuf.novb
  316. copbuf.cont
  317.  
  318.     lea    gra.s,a0        ;buffer copieren
  319.     lea    cprbuf,a1
  320. copbuf_aga                ;AGA stuff :)
  321.     move.l    #(gra.ql)/4-1,d0
  322. copbuf.a
  323.     move.w    2(a0),2(a1)
  324.     add.l    #4,a0
  325.     add.l    #4,a1
  326.     dbra    d0,copbuf.a
  327.  
  328. copbuf.end
  329.     movem.l    (sp)+,d0-d7/a0-a6
  330.     rts
  331.  
  332.     ;goes back to the workbench
  333.     
  334. syson
  335.     movem.l    d0-d7/a0-a6,-(sp)
  336.  
  337.     move.w    #$0001,$dff09a        ;tbeint uit
  338.     move.l    intvbold,($6c).w
  339.     move.l    inttbeold,($64).w
  340.  
  341.     move.l    4,a6
  342.     jsr    -138(a6)        ;permit
  343.  
  344.     move.l    gfxlib,a6
  345.     jsr    -462(a6)        ;disownblitter
  346.  
  347.     move.l    wbview,a1
  348.     move.l    gfxlib,a6
  349.     jsr    _LVOLoadView(a6)     ; Fix view
  350.     jsr    _LVOWaitTOF(a6)
  351.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  352.  
  353. syson.ras
  354.     cmp.b    #$c0,$dff006        ;prevent copperjump
  355.     bne    syson.ras
  356.  
  357.     move.l    gfxlib,a6
  358.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  359.  
  360.     movem.l    (sp)+,d0-d7/a0-a6
  361.     rts
  362.     
  363.     ;goes back to the gadgetscreen
  364.     
  365. sysoff
  366.     movem.l    d0-d7/a0-a6,-(sp)
  367.      
  368.     move.l    gfxlib,a6
  369.     move.l    gb_ActiView(a6),wbview    ;current view
  370.     sub.l    a1,a1            ; clear a1
  371.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  372.     jsr    _LVOWaitTOF(a6)     ; Wait once
  373.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  374.  
  375.     move.l    gfxlib,a6
  376.     jsr    -456(a6)        ;ownblitter
  377.  
  378.     move.l    4,a6
  379.     jsr    -132(a6)        ;forbid
  380.         
  381.     move.l    ($6c).w,intvbold
  382.     move.l    #intvb,($6c).w
  383.     move.l    ($64).w,inttbeold
  384.     move.l    #inttbe,($64).w
  385.     move.w    #$8001,$dff09a        ;tbeint aan
  386.     bsr    gracpr            ;reset copper
  387.     bsr    copbuf            ;copy copper
  388.     move.l    #cpr,$dff080
  389.  
  390.     movem.l    (sp)+,d0-d7/a0-a6
  391.     rts
  392.     
  393. cprsprrem
  394.     movem.l    d0-d7/a0-a6,-(sp)
  395.     lea    cprspr,a0
  396.     move.l    #sprdat,d0
  397.     move.w    #7,d1
  398. cprsprrem.a
  399.     move.w    d0,3*2(a0)
  400.     swap    d0
  401.     move.w    d0,1*2(a0)
  402.     swap    d0
  403.     add.l    #8,a0
  404.     dbra    d1,cprsprrem.a
  405.     movem.l    (sp)+,d0-d7/a0-a6
  406.     rts
  407.  
  408. varset                    ;variablen neerzetten
  409.     movem.l    d0-d7/a0-a6,-(sp)
  410.     move.l    #var,a0
  411.  
  412.     move.l    #cprbck,var_cprbck(a0)
  413.     move.l    gfxlib,var__GfxBase(a0)
  414.     move.b    ntscmode,var_ntsc(a0)
  415.  
  416.     move.l    curpic1,var_pic1(a0)    ;variabel
  417.     move.l    curpic2,var_pic2(a0)    ;variabel
  418.     move.w    anispd1,var_anispd1(a0)
  419.     move.w    anitel1,var_anitel1(a0)
  420.     move.b    anilop1,var_anilop1(a0)
  421.     move.l    #rottrg,var_rottrg(a0)
  422.     movem.l    (sp)+,d0-d7/a0-a6
  423.     rts
  424.     
  425.     ;this routine handles all videotracker-routines
  426.  
  427. rotply    
  428.     movem.l    d0-d7/a0-a6,-(sp)
  429.  
  430.     moveq.l    #0,d0
  431.  
  432.     lea    currot1,a2        ;routine 1
  433.     move.w    rotinf1,d0        ;routine info
  434.     bsr.s    rotplyr
  435.  
  436. rotply.end
  437.     movem.l    (sp)+,d0-d7/a0-a6
  438.     rts
  439.  
  440.     ;this routine handles 1 routine, BLIT !
  441.     
  442. rotplyr
  443.     movem.l    d0-d7/a1-a6,-(sp)
  444.  
  445.     move.l    #rot,(a2)        ;routinestart address !!!
  446.  
  447. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  448. ;    clr.l    curpic2            ;background picture
  449.     move.w    #1,anispd1        ;animationspeed
  450.     clr.w    anitel1            ;animation position
  451.  
  452.     lea    var,a0            ;communication-table
  453. ;    move.l    #rotst2,var_cols1(a0)    ;colorset !!!
  454. ;    move.l    #rotst1,var_cols1+4(a0)    ;colorset !!!
  455. ;    move.l    #rotincpic2,curpic1    ;picture !!!
  456. ;    move.l    #rotincpic2,curpal1    ;picture !!!
  457. ;    move.b    #0,anilop1        ;animloop off/on !!!
  458. ;    move.w    #32,anispd1        ;animdelay !!!
  459.     move.l    #routinemode,d0        ;routinemode !!!
  460.  
  461.     sub.l    a0,a0            ;picture info legen
  462.  
  463.     tst.l    (a2)            ;is er een routine ?
  464.     beq    rotplyr.end        ;interlace handling
  465.  
  466.     move.l    intdel,d2        ;delay
  467.     move.l    inttel,d1        ;teller
  468.     cmp.w    d2,d1
  469.     blt    rotplyr.end
  470.     clr.l    inttel
  471.                 
  472.     bsr    varset            ;variabelen updaten
  473.  
  474.     move.l    (a2),a1            ;routine halen
  475.     move.l    #var,a0            ;variablen tabel
  476.  
  477.     movem.l    d3-d7/a1-a6,-(sp)
  478.     moveq.l    #0,d1            ;vars wissen
  479.     moveq.l    #0,d2
  480.     moveq.l    #0,d3
  481.     moveq.l    #0,d4
  482.     moveq.l    #0,d5
  483.     moveq.l    #0,d6
  484.     moveq.l    #0,d7
  485.     sub.l    a2,a2
  486.     sub.l    a3,a3
  487.     sub.l    a4,a4
  488.     sub.l    a5,a5
  489.  
  490.     jsr    4(a1)            ;routine afwerken
  491.     movem.l    (sp)+,d3-d7/a1-a6
  492.  
  493.     ;Routine:
  494.     ;
  495.     ;Input:
  496.     ;a0=variabelentabel
  497.     ;d0=routinemode
  498.     ;
  499.     ;Output:
  500.     ;a0=picture
  501.     ;d1=copperlist
  502.     ;d2=interruptdelay
  503.     
  504.     move.w    #$0020,$dff09a        ;vb off !
  505.  
  506.     move.l    d2,intdel        ;delay
  507.  
  508.     lea    cprjmp,a3
  509.     move.l    #cprbck-8,d0
  510.  
  511.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  512.     bne.s    rotplyr.nocop
  513.     tst.l    d1            ;copperlist ?
  514.     beq.s    rotplyr.nocop
  515.     move.l    d1,d0
  516. rotplyr.nocop
  517.     move.w    d0,6(a3)
  518.     swap    d0
  519.     move.w    d0,2(a3)
  520.  
  521.     cmp.l    #currot2,a2        ;dpl rot ?
  522.     bne.s    rotplyr.rot1
  523.  
  524.     cmp.l    #0,a0            ;geen picture ?
  525.     beq    rotplyr.endvb
  526.  
  527.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  528.     bne    rotplyr.endvb
  529.  
  530.     move.l    a0,curpal2
  531.  
  532.     cmp.l    #'PALE',(a0)        ;palette ?
  533.     beq    rotplyr.pal
  534.  
  535.     move.l    a0,curpic2
  536.     clr.l    curpic2+4        ;animatie data wissen
  537.     bra    rotplyr.alla
  538.  
  539. rotplyr.rot1
  540.     cmp.l    #0,a0            ;picture ?
  541.     beq    rotplyr.alla
  542.  
  543.     cmp.l    #'PALE',(a0)
  544.     beq    rotplyr.qb
  545.  
  546.     tst.b    rotdpl            ;routine gestart ?
  547.     beq.s    rotplyr.qb
  548. ;    bsr    dpl
  549.     move.l    oldrot,currot2        ;was al gezet
  550. rotplyr.qb
  551.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  552.     beq.s    rotplyr.nochange
  553.  
  554.     move.l    a0,curpal2        ;current palette
  555.  
  556.     cmp.l    #'PALE',(a0)        ;palette ?
  557.     beq    rotplyr.pal
  558.  
  559.     move.l    a0,curpic2        ;current picture (cycle)
  560.     clr.l    curpic2+4        ;animatie data wissen
  561.     bra    rotplyr.alla
  562.     
  563. rotplyr.nochange
  564.     move.l    a0,curpal1        ;current palette
  565.  
  566.     cmp.l    #'PALE',(a0)        ;palette ?
  567.     bne    rotplyr.nopal
  568.     clr.l    curpal2
  569. rotplyr.pal
  570.     clr.b    rotdpl
  571.     clr.b    dplctr
  572.     bsr    grac            ;colorset
  573.     bra    rotplyr.endvb
  574.  
  575. rotplyr.nopal
  576.  
  577.     move.l    a0,curpic1        ;current picture (cycle)
  578.     clr.l    curpic1+4        ;animatie data wissen
  579.  
  580. rotplyr.rotnopic
  581.     tst.b    rotdpl
  582.     beq.s    rotplyr.alla
  583.     clr.b    rotdpl
  584.     clr.l    cycdel1            ;cycle info wissen
  585.     clr.l    4+cycdel1
  586.     bsr    paltabres        ;reset colorcycle tabel
  587.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  588.     clr.w    anitel1            ;anitel1 op begin
  589.     move.b    #1,dplctr        ;dual playfield
  590.     bsr    grap
  591.     bsr    grac            ;colorset
  592.     bra.s    rotplyr.endvb
  593. rotplyr.alla
  594.     clr.b    dplctr
  595.     bsr    grap            ;plnset (double buffer)
  596. rotplyr.endvb
  597.     move.w    #$8020,$dff09a
  598. rotplyr.end
  599.     movem.l    (sp)+,d0-d7/a1-a6
  600.     rts
  601.  
  602.     ;removes possible routine-coppers
  603.     
  604. gracpr
  605.     movem.l    d0-d7/a0-a6,-(sp)
  606.     lea    cprjmp,a3
  607.     move.l    #cprbck-8,d0        ;copperlist resetten
  608.     move.w    d0,6(a3)
  609.     swap    d0
  610.     move.w    d0,2(a3)
  611.     movem.l    (sp)+,d0-d7/a0-a6
  612.     rts
  613.  
  614. grap                    ;d7=anim
  615.     movem.l    d0-d7/a0-a6,-(sp)
  616.  
  617.     clr.l    d7
  618.  
  619.     tst.l    curpic1            ;current picture ?
  620.     beq    grap.end
  621.  
  622.     move.l    curpic1,a2        ;normal pic halen
  623.  
  624.     lea    gracprscr,a1        ;window neerzetten
  625.     move.l    hogscr,d1
  626.  
  627.     move.w    pic_hgt(a2),d3        ;pic hoogte
  628.     move.w    pic_vew(a2),d5
  629.     btst    #2,d5            ;interlace ?
  630.     beq.s    grap.nohi4
  631.     lsr.w    #1,d3            ;/2
  632. grap.nohi4
  633.     cmp.w    d3,d1
  634.     bge.s    grap.hog
  635.     move.w    d1,d3
  636. grap.hog
  637.     sub.w    d3,d1
  638.     lsr.w    #1,d1
  639.     add.w    #win_str,d1
  640.     move.w    d1,d2
  641.     add.w    d3,d2
  642.  
  643.     move.b    d1,2(a1)        ;y start
  644.     move.b    d2,6(a1)        ;y end
  645.  
  646.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  647.     lsl.l    #3,d4
  648.  
  649.     move.l    #vew_wid*8,d0
  650.     move.l    #0,d1
  651.     move.l    #$61,d6
  652.  
  653.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  654.     ble.s    grap.noov1
  655.     move.l    #$41,d6
  656. grap.noov1
  657.  
  658.     move.w    pic_vew(a2),d5
  659.     btst    #15,d5            ;hires ?
  660.     beq.s    grap.nohi2
  661.  
  662.     move.l    #(vew_wid)*8*2,d0
  663.     move.l    #1,d1
  664.     move.l    #$61,d6
  665.  
  666.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  667.     ble.s    grap.nohi2
  668.     move.l    #(vew_wid)*8*2,d0
  669.     move.l    #$51,d6
  670.  
  671.     bra.s    grap.noshi2
  672. grap.nohi2    
  673.     btst    #6,d5            ;super hires ?
  674.     beq.s    grap.noshi2
  675.  
  676.     move.l    #(vew_wid)*8*4,d0
  677.     move.l    #2,d1
  678.     move.l    #$61,d6
  679.  
  680.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  681.     ble.s    grap.noshi2
  682.     move.l    #(vew_wid)*8*4,d0
  683.     move.l    #$51,d6
  684.  
  685. grap.noshi2    
  686.  
  687.     clr.w    d5
  688.     cmp.w    d0,d4            ;breeder dan scherm ?
  689.     ble.s    grap.c
  690.     move.w    d4,d5
  691.     move.w    d0,d4
  692.     sub.w    d0,d5            ;modulo
  693.     lsr.w    #3,d5            ;/8
  694. grap.c
  695.     lsr.w    d1,d0
  696.     lsr.w    d1,d4
  697.  
  698.     move.w    d0,d2
  699.     sub.w    d4,d2
  700.     lsr.w    #1,d2            ;/2
  701.  
  702.     add.w    d6,d2
  703.     move.b    d2,3(a1)        ;x start
  704.     move.w    d2,d3            ;d3 bewaren !
  705.  
  706.     add.w    d4,d2            ;d4 bewaren !
  707.     move.b    d2,7(a1)        ;x end
  708.     
  709.     move.w    pic_vew(a2),d6
  710.     btst    #15,d6            ;hires ?
  711.     beq.s    grap.nohi5    
  712.     add.l    d4,d4            ;*2
  713.     bra.s    grap.noshi5
  714. grap.nohi5
  715.     btst    #6,d6            ;super hires ?
  716.     beq.s    grap.noshi5    
  717.     add.l    d4,d4            ;*4
  718.     add.l    d4,d4
  719. grap.noshi5
  720.  
  721.     move.l    d7,-(sp)
  722.     move.w    pic_vew(a2),d6
  723.     move.l    #17,d0
  724.     move.l    #4,d1            ;ecs 1
  725.     move.l    #3,d7
  726.  
  727.     btst    #15,d6            ;hires ?
  728.     beq.s    grap.nohi3    
  729.     move.l    #17,d0            ;ecs 9
  730.     move.l    #4,d1            ;ecs 2
  731.     move.l    #2,d7
  732.     bra.s    grap.noshi3
  733. grap.nohi3
  734.     btst    #6,d6            ;super hires ?
  735.     beq.s    grap.noshi3    
  736.     move.l    #17,d0            ;ecs 9
  737.     move.l    #4,d1            ;ecs 2
  738.     move.l    #1,d7
  739. grap.noshi3
  740.     sub.w    d0,d3
  741.     lsr.w    #1,d3
  742.     move.w    d3,10(a1)        ;ddfstrt
  743.     
  744.     move.w    d4,d2            ;pic breedte in pixels
  745.     lsr.w    #4,d2            ;/16
  746.     sub.w    d1,d2            ;-1
  747.  
  748.     lsl.w    d7,d2            ;*8
  749.     add.w    d2,d3
  750.     move.w    d3,14(a1)        ;ddfstop
  751.     move.l    (sp)+,d7
  752.     
  753.     lea    pic_raw(a2),a0
  754.  
  755.     moveq.l    #0,d2
  756.     move.w    pic_dpt(a2),d2
  757.     sub.l    #1,d2
  758.     muls    pic_wid(a2),d2
  759.     add.w    d2,d5
  760.  
  761.     move.w    pic_vew(a2),d2        ;viewmode add
  762.     btst    #2,d2
  763.     beq.s    grap.nolace4
  764.  
  765.     moveq.l    #0,d2
  766.     move.w    pic_dpt(a2),d2
  767.     muls    pic_wid(a2),d2
  768.     add.w    d2,d5            ;interlace gedoe
  769. grap.nolace4
  770.  
  771.     lea    gracprbpl,a4        ;iffpln neerzetten
  772.     lea    gracprpln,a0        ;iffpln neerzetten
  773.     moveq.l    #0,d2
  774.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  775.     move.l    #8,d6            ;copper step !
  776.  
  777.     tst.l    curpic2            ;2de picture ?
  778.     bne.s    grap.pic2
  779. grap.nopic2
  780.     move.w    d5,34(a1)        ;modulo oneven zetten
  781.     bra    grap.nodpl
  782. grap.pic2
  783.     move.l    curpic2,a3        ;oneven plane
  784.     move.l    curpic2+4,a6        ;oneven plane
  785.     move.l    currot2,a5        ;oneven plane
  786.     clr.l    curpic2            ;mischien niet goed
  787.     clr.l    curpic2+4        ;mischien niet goed
  788.     clr.l    curpal2            ;mischien niet goed
  789.     clr.l    currot2            ;mischien niet goed
  790.  
  791.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  792.     beq.s    grap.nopic2
  793.     
  794.     cmp.l    #0,currot1        ;routine ?    
  795.     beq.s    grap.norot
  796.     cmp.l    currot1,a5        ;routine hetzelfde ?
  797.     beq.s    grap.nopic2
  798. grap.norot
  799.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  800.     bgt    grap.nopic2
  801.  
  802.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  803.     cmp.b    d2,d3            ;gelijke plnummers ?
  804.     bne.s    grap.nopic2
  805.     move.w    pic_vew(a2),d1
  806.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  807.     bne.s    grap.nopic2
  808.  
  809.     move.w    pic_vew(a2),d1        ;groter dan view test
  810.     btst    #6,d1            ;super hires ?
  811.     beq.s    grap.nohi2a
  812.     move.l    #vew_wid*4,d1
  813.     bra.s    grap.nohi2b
  814. grap.nohi2a
  815.     btst    #15,d1            ;hires ?
  816.     beq.s    grap.noshi2a
  817.     move.l    #vew_wid*2,d1
  818.     bra.s    grap.nohi2b
  819. grap.noshi2a
  820.     move.l    #vew_wid,d1
  821. grap.nohi2b
  822.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  823.     bgt.s    grap.small
  824.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  825.     bgt.s    grap.small
  826.  
  827.     move.w    pic_vew(a2),d1
  828.     btst    #2,d1
  829.     beq.s    grap.nolace8a
  830.     move.l    hogscr,d1
  831.     add.l    d1,d1
  832.     bra.s    grap.nolace8b
  833. grap.nolace8a
  834.     move.l    hogscr,d1
  835. grap.nolace8b
  836.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  837.     bgt.s    grap.small
  838.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  839.     bgt.s    grap.small
  840.     bra.s    grap.big
  841.  
  842. grap.small
  843.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  844.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  845.     bne    grap.nopic2
  846.     move.w    pic_wid(a2),d1
  847.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  848.     bne    grap.nopic2
  849.  
  850. grap.big
  851.     move.l    a3,curpic2        ;toch wel goed !
  852.     move.l    a6,curpic2+4
  853.     move.l    a3,curpal2
  854.     move.l    a5,currot2
  855.  
  856.     tst.b    dplctr            ;dual playfield al gezet ?
  857.     beq    grap.nocop
  858.  
  859.     move.w    30(a1),34(a1)        ;modulo copieren
  860.  
  861.     move.w    2(a4),d1        ;bplcon0
  862.     btst    #10,d1            ;al dual playfield ?
  863.     beq.s    grap.ta
  864.  
  865.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  866.     move.w    6(a0),14(a0)
  867.  
  868.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  869.     move.w    22(a0),30(a0)
  870.  
  871.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  872.     move.w    38(a0),46(a0)
  873.  
  874.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  875.     move.w    54(a0),62(a0)
  876.  
  877.     bra.s    grap.tb
  878. grap.ta
  879.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  880.     move.w    28(a0),62(a0)
  881.  
  882.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  883.     move.w    22(a0),46(a0)
  884.  
  885.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  886.     move.w    14(a0),30(a0)
  887.  
  888.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  889.     move.w    6(a0),14(a0)
  890.  
  891. grap.tb
  892.     move.l    #palette,a3        ;palette copieren
  893.  
  894.     move.w    #16-1,d1
  895. grap.pal
  896.     move.l    (a3)+,60(a3)
  897.     dbra    d1,grap.pal
  898.  
  899. grap.nocop
  900.     add.w    d3,d2            ;aantal bitplanes
  901.     cmp.w    #8,d2            ;8 bitplanes ?
  902.     blt    grap.no8planes2
  903.     move.w    #%10000,d2        ;only bit 4
  904.     bra    grap.8planes2
  905. grap.no8planes2
  906.     lsl.w    #8,d2
  907.     lsl.w    #4,d2
  908. grap.8planes2
  909.     or.w    #$400,d2        ;dual playfield aan
  910.     move.w    d2,2(a4)        ;bplcon0
  911.  
  912.     movem.l    d0-d7/a0-a6,-(sp)
  913.  
  914.     move.l    curpic,a2        ;animpic ?
  915.     move.l    curfrm,d7
  916.     cmp.l    #0,a2
  917.     bne.s    grap.noanipic
  918.  
  919.     move.l    curpic2,a2        ;normal pic ?
  920.     move.l    curfrm2,d7
  921.     cmp.l    #0,a2
  922.     beq.s    grap.nodplpic
  923.  
  924. grap.noanipic
  925.     add.l    d6,a0
  926.     add.w    d6,d6
  927.     bsr.s    grappln            ;a2,d6,d7,d0
  928. grap.nodplpic
  929.     movem.l    (sp)+,d0-d7/a0-a6
  930.     add.w    d6,d6
  931.     bra.s    grap.nodpla
  932.  
  933.  
  934. grap.nodpl                ;geen dual playfield
  935.     cmp.w    #8,d2            ;8 bitplanes ?
  936.     blt    grap.no8planes
  937.     move.w    #%10000,d2        ;only bit 4
  938.     bra    grap.8planes
  939. grap.no8planes
  940.     lsl.w    #8,d2
  941.     lsl.w    #4,d2
  942. grap.8planes
  943.     move.w    d2,2(a4)        ;bplcon0
  944.  
  945. grap.nodpla
  946.     move.w    d5,30(a1)        ;modulo even
  947.  
  948.     moveq.l    #0,d3
  949.     add.w    pic_vew(a2),d3        ;viewmode add
  950.     moveq.l    #0,d2
  951.     move.w    2(a4),d2
  952.     or.l    d3,d2
  953.  
  954.     ifd    gui
  955.     tst.b    genlck
  956.     bne    grap.genset
  957.     endc
  958.  
  959.     or.l    #$100,d2        ;genlock off ($302)
  960.  
  961.     ifd    gui
  962.     bra    grap.gencont
  963. grap.genset
  964.     or.l    #$102,d2        ;genlock on ($302)
  965. grap.gencont
  966.     endc
  967.     
  968.     move.w    d2,2(a4)
  969.     
  970.     bsr.s    grappln            ;a2,d6,d7,d0
  971.  
  972. grap.end
  973.     
  974.     movem.l    (sp)+,d0-d7/a0-a6
  975.     rts
  976.         
  977.  
  978.     ;sets on of the 2 possible pictures to the copper
  979.     ;handles interlace
  980.  
  981.     ;d7=framenummer
  982.     ;d6=copperliststap
  983.     ;d0=raw planes positie
  984.     ;a2=current picture
  985. grappln                    ;planes invullen 
  986.     movem.l    d0-d7/a0-a6,-(sp)
  987.  
  988.     lea    pic_raw(a2),a1
  989.     move.l    a1,d0            ;raw planes
  990.     
  991.     moveq.l    #0,d2            ;x*y
  992.     move.w    pic_wid(a2),d2
  993.     lsr.l    #1,d2            ;/2
  994.     moveq.l    #0,d3
  995.     move.w    pic_hgt(a2),d3
  996.     muls    d3,d2
  997.     
  998.     move.l    d2,d4
  999.     add.l    d2,d2
  1000.  
  1001.     move.w    pic_dpt(a2),d3
  1002.     muls    d3,d4            ;hele picture size
  1003.     muls    d7,d4            ;frame*size d7 !!!
  1004.  
  1005.     add.l    d4,d4
  1006.  
  1007.     add.l    d4,d0
  1008.  
  1009.     move.l    #vew_wid,d5        ;max x view
  1010.     move.l    hogscr,d4        ;max y view
  1011.     move.w    pic_vew(a2),d1        ;viewmode add
  1012.     btst    #2,d1
  1013.     beq.s    grappln.nolace
  1014.     add.l    d4,d4            ;max y view
  1015. grappln.nolace
  1016.     btst    #15,d1            ;hires ?
  1017.     beq.s    grappln.nohi
  1018.     move.l    #vew_wid*2,d5        ;max x view
  1019.     bra.s    grappln.noshi
  1020. grappln.nohi
  1021.     btst    #6,d1            ;super hires ?
  1022.     beq.s    grappln.noshi
  1023.     move.l    #vew_wid*4,d5        ;max x view
  1024. grappln.noshi
  1025.  
  1026.     moveq.l    #0,d3            ;scherm centreren
  1027.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  1028.     cmp.w    d5,d3            ;breder dan scherm ?
  1029.     ble.s    grappln.qa
  1030.     sub.w    d5,d3            ;-scherm breedte
  1031.     lsr.w    #2,d3            ;/4
  1032.  
  1033.     add.l    d3,d3
  1034.  
  1035.     add.l    d3,d0
  1036. grappln.qa
  1037.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  1038.     cmp.w    d4,d3            ;hoger dan scherm ?
  1039.     ble.s    grappln.qb
  1040.     sub.w    d4,d3            ;-scherm breedte
  1041.     lsr.w    #1,d3            ;/2
  1042.     moveq.l    #0,d5
  1043.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  1044.     muls    pic_dpt(a2),d5
  1045.     muls    d5,d3
  1046.     add.l    d3,d0
  1047. grappln.qb
  1048.     moveq.l    #0,d2
  1049.     move.w    pic_wid(a2),d2
  1050.  
  1051.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  1052.     btst    #2,d5
  1053.     beq.s    grappln.nolac7b
  1054.  
  1055.     move.w    $04(a6),d5        ;even/oneven ?
  1056.     btst    #15,d5
  1057.     beq.s    grappln.nolac7b
  1058.     
  1059.     moveq.l    #0,d3
  1060.     move.w    pic_wid(a2),d3
  1061.     muls    pic_dpt(a2),d3
  1062.     add.l    d3,d0
  1063. grappln.nolac7b
  1064.  
  1065.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  1066.     tst.w    d1            ;0 planes ?
  1067.     beq    grappln.end
  1068.     sub.w    #1,d1
  1069. grappln.a
  1070.     move.w    d0,3*2(a0)
  1071.     swap    d0
  1072.     move.w    d0,1*2(a0)
  1073.     swap    d0
  1074.     add.l    d6,a0            ;d6=copper step !
  1075.     add.l    d2,d0
  1076.     dbra    d1,grappln.a
  1077.  
  1078.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1079.     bne    grappln.noham8
  1080.     btst    #3,pic_vew(a2)        ;ham ?
  1081.     beq    grappln.noham8
  1082.  
  1083.     move.w    -14(a0),d0        ;get 6
  1084.     move.w    -10(a0),d1
  1085.     move.w    -6(a0),d2        ;get 7
  1086.     move.w    -2(a0),d3
  1087.     move.w    -18(a0),-2(a0)        ;5>7
  1088.     move.w    -22(a0),-6(a0)        ;5>7
  1089.     move.w    -26(a0),-10(a0)        ;4>6
  1090.     move.w    -30(a0),-14(a0)        ;4>6
  1091.     move.w    -34(a0),-18(a0)        ;3>5
  1092.     move.w    -38(a0),-22(a0)        ;3>5
  1093.     move.w    -42(a0),-26(a0)        ;2>4
  1094.     move.w    -46(a0),-30(a0)        ;2>4
  1095.     move.w    -50(a0),-34(a0)        ;1>3
  1096.     move.w    -54(a0),-38(a0)        ;1>3
  1097.     move.w    -58(a0),-42(a0)        ;0>2
  1098.     move.w    -62(a0),-46(a0)        ;0>2
  1099.     move.w    d0,-62(a0)        ;6>0
  1100.     move.w    d1,-58(a0)        ;6>0
  1101.     move.w    d2,-54(a0)        ;7>1
  1102.     move.w    d3,-50(a0)        ;7>1
  1103. grappln.noham8
  1104.  
  1105. grappln.end
  1106.     movem.l    (sp)+,d0-d7/a0-a6
  1107.     rts
  1108.  
  1109.     ;sets palettes to palette-buffer
  1110.     
  1111. grac
  1112.     movem.l    d0-d7/a0-a6,-(sp)
  1113.  
  1114.     lea    curpal1,a3        ;palette 1
  1115.     move.l    #palette,a1
  1116.     bsr.s    gracfrm
  1117.  
  1118.     lea    curpal2,a3        ;palette 2 (dpl)
  1119.     move.l    #16*4+palette,a1
  1120.     bsr.s    gracfrm
  1121.     
  1122.     bsr    palctr            ;palette-buffer to copper
  1123. grac.end
  1124.     movem.l    (sp)+,d0-d7/a0-a6
  1125.     rts
  1126.         
  1127.     ;moves palette from picture to palette-buffer
  1128.  
  1129. gracfrm
  1130.     movem.l    d0-d7/a0-a6,-(sp)
  1131.     tst.l    (a3)            ;palette aanwezig ?
  1132.     beq.s    gracfrm.end
  1133.  
  1134.     move.l    (a3),a2            ;current palette
  1135.     
  1136.     cmp.l    #'PALE',(a2)        ;palette ?
  1137.     bne.s    gracfrm.pict
  1138.     lea    6(a2),a0        ;palette
  1139.     move.w    4(a2),d0        ;aantal kleuren
  1140.     bra.s    gracfrm.col
  1141. gracfrm.pict
  1142.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1143.     bne.s    gracfrm.noanim
  1144.  
  1145.     moveq.l    #0,d1
  1146.     move.w    pic_ani(a2),d1
  1147.     bclr    #7,d1            ;behandelbit weghalen
  1148.  
  1149.     moveq.l    #0,d3
  1150.     move.w    pic_wid(a2),d3
  1151.     lsr.w    #1,d3            ;/2
  1152.     muls    pic_hgt(a2),d3
  1153.     muls    pic_dpt(a2),d3
  1154.  
  1155.     add.l    d3,d3
  1156.  
  1157.     add.l    #pic_raw,d3
  1158.     move.l    d3,d5
  1159.  
  1160.     btst    #0,d1
  1161.     bne.s    gracfrm.buf2
  1162.     moveq.l    #0,d5
  1163. gracfrm.buf2
  1164.     add.l    d5,a2
  1165. gracfrm.noanim
  1166.     lea    pic_pal(a2),a0        ;palette
  1167.     move.w    pic_palnum(a2),d0
  1168.  
  1169.     tst.w    d0            ;0 planes ?
  1170.     beq.s    gracfrm.end
  1171. gracfrm.col
  1172. gracfrm.fa
  1173.     move.l    (a0)+,(a1)+
  1174.     dbra    d0,gracfrm.fa
  1175. gracfrm.end
  1176.     movem.l    (sp)+,d0-d7/a0-a6
  1177.     rts
  1178.     
  1179.     ;handles colorcycling in the palette-buffer
  1180.  
  1181. palcycctr
  1182.     movem.l    d0-d7/a0-a6,-(sp)
  1183.  
  1184.     move.l    curpic1,a2        ;current raw
  1185.     cmp.l    #0,a2
  1186.     beq.s    palcycctr.qb
  1187.     lea    cycdel1,a3        ;cycle delays
  1188.     move.l    #paltab,a4
  1189.     bsr    palcyc
  1190. palcycctr.qb
  1191.     move.l    curpic2,a2        ;current raw
  1192.     cmp.l    #0,a2
  1193.     beq.s    palcycctr.c
  1194.     lea    cycdel2,a3        ;cycle delays
  1195.     move.l    #16*2+paltab,a4
  1196.     bsr    palcyc
  1197. palcycctr.c
  1198.     movem.l    (sp)+,d0-d7/a0-a6
  1199.     rts
  1200.     
  1201.     ;copies palette-buffer to copper
  1202.  
  1203. palctr
  1204.     movem.l    d0-d7/a0-a6,-(sp)
  1205.  
  1206.     lea    gracprcol,a1        ;AGA
  1207.     move.l    #palette,a0
  1208.     move.l    #paltab,a2
  1209.     move.w    #8-1,d6
  1210. palctr.e
  1211.     move.w    #32-1,d7
  1212. palctr.d
  1213.     move.w    (a2)+,d0            ;get cycle-position
  1214.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1215.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1216.     add.l    #4,a1
  1217.     dbra    d7,palctr.d
  1218.     add.l    #((32+2)*4),a1
  1219.     dbra    d6,palctr.e
  1220. palctr.end
  1221.     movem.l    (sp)+,d0-d7/a0-a6
  1222.     rts
  1223.  
  1224.     ;reset palette tabel, for proper color cycling
  1225.  
  1226. paltabres
  1227.     movem.l    d0-d7/a0-a6,-(sp)
  1228.     lea    paltab,a0
  1229.     clr.l    d0
  1230.     move.w    #256-1,d1
  1231. paltabres.a
  1232.     move.w    d0,(a0)+
  1233.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1234.     dbra    d1,paltabres.a
  1235. paltabres.end
  1236.     movem.l    (sp)+,d0-d7/a0-a6
  1237.     rts
  1238.  
  1239.     ;colorcyclinghandling of a palette
  1240.  
  1241. palcyc
  1242.     movem.l    d0-d7/a0-a6,-(sp)
  1243.     move.w    #4-1,d7            ;4 cycles
  1244. palcyc.d
  1245.     tst.w    (a3)+            ;delay klaar ?
  1246.     bne.s    palcyc.c
  1247.     
  1248.     moveq.l    #0,d1
  1249.     move.b    pic_cycstr(a2),d1    ;start color
  1250.     lsl.b    #1,d1        ;*2
  1251.  
  1252.     moveq.l    #0,d2
  1253.     move.b    pic_cycend(a2),d2    ;end color
  1254.     lsl.b    #1,d2        ;*2
  1255.  
  1256.     moveq.l    #0,d3
  1257.     move.b    pic_cycadd(a2),d3    ;richting
  1258.  
  1259.     move.l    a4,a0            ;palette pointer
  1260.     move.l    a0,a1
  1261.     add.l    d1,a0            ;startcolor
  1262.     add.l    d2,a1            ;endcolor
  1263.     
  1264.     cmp.b    #1,d3            ;omhoog
  1265.     beq.s    palcyc.up    
  1266.     cmp.b    #3,d3            ;omlaag
  1267.     beq.s    palcyc.down
  1268.     bra.s    palcyc.i
  1269.  
  1270. palcyc.up                ;kleuren copieren
  1271.     move.w    (a1),d4            ;laatst color bewaren
  1272. palcyc.f                ;kleuren copieren
  1273.     cmp.l    a0,a1
  1274.     beq.s    palcyc.fa
  1275.     move.w    -(a1),2(a1)
  1276.     bra.s    palcyc.f
  1277. palcyc.fa
  1278.     move.w    d4,(a1)
  1279.     bra.s    palcyc.g    
  1280.     
  1281. palcyc.down
  1282.     move.w    (a0),d4            ;laatst color bewaren
  1283. palcyc.h                ;kleuren copieren
  1284.     cmp.l    a0,a1
  1285.     beq.s    palcyc.ha
  1286.     move.w    2(a0),(a0)+
  1287.     bra.s    palcyc.h
  1288. palcyc.ha
  1289.     move.w    d4,(a1)
  1290.  
  1291. palcyc.g
  1292.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1293.     bra.s    palcyc.i
  1294. palcyc.c
  1295.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1296. palcyc.i
  1297.     add.l    #4,a2            ;next cycle info
  1298.     dbra    d7,palcyc.d
  1299.  
  1300. palcyc.qb
  1301.     movem.l    (sp)+,d0-d7/a0-a6
  1302.     rts
  1303.  
  1304.  
  1305.  
  1306. ;    SECTION    variabelen,DATA_c
  1307.  
  1308.     cnop    0,2
  1309. curtsk        dc.l    0
  1310. tskpri        dc.l    0
  1311. duplok        dc.l    0
  1312. inttel        dc.l    0
  1313. intdel        dc.l    0
  1314.  
  1315. form        dc.l    0
  1316. ifffil        dc.l    0
  1317. intvbold    dc.l    0
  1318. inttbeold    dc.l    0
  1319. patpos        dc.l    0
  1320. gfxlib        dc.l    0
  1321. doslib        dc.l    0
  1322. wbview      dc.l    0
  1323. mt_data        dc.l    0
  1324. memvid        dc.l    0
  1325. oldcprlist    dc.l    0
  1326. hogscr        dc.l    vew_hgt
  1327.  
  1328. inspos        dc.l    -1
  1329. anispd1        dc.w    1    ;nooit op 0 !
  1330. anispd2        dc.w    1
  1331.  
  1332.         cnop    0,2
  1333. varclr.s            ;start wissen
  1334. oldrot        dc.l    0
  1335. curpic        dc.l    0
  1336. curfrm        dc.l    0
  1337. cycdel1        ds.w    4
  1338. cycdel2        ds.w    4
  1339.  
  1340. rotinf1        dc.w    0
  1341. rotinf2        dc.w    0
  1342.  
  1343. effspd        dc.w    0
  1344. efflop        dc.b    0
  1345. anilop1        dc.b    0
  1346. anilop2        dc.b    0
  1347. anipal1        dc.b    0
  1348. anipal2        dc.b    0
  1349. rotdpl        dc.b    1
  1350. rottrg        dc.b    1
  1351. dplctr        dc.b    0
  1352.         cnop    0,2
  1353.  
  1354. insdat        ds.l    4
  1355. inspri        dc.l    0
  1356. instel        dc.w    0
  1357.  
  1358. cureff        dc.l    0
  1359. efftel        dc.w    0
  1360.  
  1361. curpal1        dc.l    0
  1362. curpal2        dc.l    0
  1363. currot1        dc.l    0
  1364. currot2        dc.l    0
  1365. curpic1        dc.l    0
  1366. curpic2        dc.l    0
  1367. anitel1        dc.w    0
  1368. anitel2        dc.w    0
  1369. curfrm1        dc.l    0
  1370. curfrm2        dc.l    0
  1371. oldfrm1        dc.l    0
  1372. oldfrm2        dc.l    0
  1373.  
  1374. varclr.e
  1375.         dc.l    0            ;wisruimte
  1376.     
  1377. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1378.     
  1379. ntscmode    dc.b    0
  1380. end        dc.b    0
  1381.  
  1382. pronam    dc.b    'VideoTracker',0
  1383.     cnop    0,2
  1384. dosnam    dc.b    'dos.library',0
  1385.     cnop    0,4
  1386. gfxnam    dc.b    'graphics.library',0
  1387.     cnop    0,4
  1388.     
  1389.     cnop    0,4
  1390. gra.s            ;copperlist edit buffer
  1391. gracprscr
  1392.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1393. gracprbpl
  1394.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1395.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1396. gracprpln
  1397.     dc.w    $e0,$0000,$e2,$0000    ;1
  1398.     dc.w    $e4,$0000,$e6,$0000    ;2
  1399.     dc.w    $e8,$0000,$ea,$0000    ;3
  1400.     dc.w    $ec,$0000,$ee,$0000    ;4
  1401.     dc.w    $f0,$0000,$f2,$0000    ;5
  1402.     dc.w    $f4,$0000,$f6,$0000    ;6
  1403.     dc.w    $f8,$0000,$fa,$0000    ;7
  1404.     dc.w    $fc,$0000,$fe,$0000    ;8
  1405. gracprcol
  1406.     dc.w    $106,$0000
  1407.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1408.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1409.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1410.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1411.     dc.w    $106,$0200
  1412.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1413.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1414.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1415.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1416.  
  1417.     dc.w    $106,$2000
  1418.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1419.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1420.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1421.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1422.     dc.w    $106,$2200
  1423.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1424.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1425.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1426.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1427.  
  1428.     dc.w    $106,$4000
  1429.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1430.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1431.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1432.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1433.     dc.w    $106,$4200
  1434.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1435.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1436.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1437.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1438.  
  1439.     dc.w    $106,$6000
  1440.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1441.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1442.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1443.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1444.     dc.w    $106,$6200
  1445.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1446.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1447.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1448.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1449.  
  1450.     dc.w    $106,$8000
  1451.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1452.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1453.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1454.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1455.     dc.w    $106,$8200
  1456.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1457.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1458.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1459.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1460.  
  1461.     dc.w    $106,$a000
  1462.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1463.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1464.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1465.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1466.     dc.w    $106,$a200
  1467.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1468.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1469.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1470.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1471.  
  1472.     dc.w    $106,$c000
  1473.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1474.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1475.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1476.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1477.     dc.w    $106,$c200
  1478.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1479.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1480.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1481.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1482.  
  1483.     dc.w    $106,$e000
  1484.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1485.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1486.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1487.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1488.     dc.w    $106,$e200
  1489.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1490.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1491.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1492.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1493.  
  1494.     dc.w    $106,$1000
  1495.  
  1496. cprjmp
  1497.     dc.w    $080,0,$082,0
  1498. gra.e
  1499. gra.ql    equ    gra.e-gra.s        ;block lengte
  1500.  
  1501. cpr                    ;real copperlist
  1502.     dc.w    $0001,$fffe
  1503.     dc.w    $09c,$8001        ;tbeint
  1504. cprspr
  1505.     dc.w    $120,$0000,$122,$0000
  1506.     dc.w    $124,$0000,$126,$0000
  1507.     dc.w    $128,$0000,$12a,$0000
  1508.     dc.w    $12c,$0000,$12e,$0000
  1509.     dc.w    $130,$0000,$132,$0000
  1510.     dc.w    $134,$0000,$136,$0000
  1511.     dc.w    $138,$0000,$13a,$0000
  1512.     dc.w    $13c,$0000,$13e,$0000
  1513.  
  1514. cprbuf
  1515.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1516.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1517.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1518.  
  1519.     dc.w    $e0,$0000,$e2,$0000    ;0
  1520.     dc.w    $e4,$0000,$e6,$0000    ;1
  1521.     dc.w    $e8,$0000,$ea,$0000    ;2
  1522.     dc.w    $ec,$0000,$ee,$0000    ;3
  1523.     dc.w    $f0,$0000,$f2,$0000    ;4
  1524.     dc.w    $f4,$0000,$f6,$0000    ;5
  1525.     dc.w    $f8,$0000,$fa,$0000    ;6
  1526.     dc.w    $fc,$0000,$fe,$0000    ;7
  1527.  
  1528.     dc.w    $106,$0000
  1529.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1530.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1531.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1532.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1533.     dc.w    $106,$0200
  1534.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1535.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1536.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1537.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1538.  
  1539.     dc.w    $106,$2000
  1540.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1541.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1542.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1543.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1544.     dc.w    $106,$2200
  1545.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1546.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1547.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1548.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1549.  
  1550.     dc.w    $106,$4000
  1551.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1552.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1553.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1554.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1555.     dc.w    $106,$4200
  1556.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1557.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1558.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1559.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1560.  
  1561.     dc.w    $106,$6000
  1562.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1563.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1564.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1565.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1566.     dc.w    $106,$6200
  1567.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1568.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1569.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1570.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1571.  
  1572.     dc.w    $106,$8000
  1573.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1574.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1575.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1576.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1577.     dc.w    $106,$8200
  1578.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1579.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1580.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1581.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1582.  
  1583.     dc.w    $106,$a000
  1584.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1585.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1586.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1587.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1588.     dc.w    $106,$a200
  1589.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1590.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1591.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1592.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1593.  
  1594.     dc.w    $106,$c000
  1595.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1596.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1597.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1598.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1599.     dc.w    $106,$c200
  1600.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1601.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1602.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1603.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1604.  
  1605.     dc.w    $106,$e000
  1606.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1607.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1608.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1609.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1610.     dc.w    $106,$e200
  1611.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1612.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1613.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1614.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1615.  
  1616.     dc.w    $106,$1000
  1617.  
  1618.     dc.w    $080,0,$082,0
  1619. cprbuf.e
  1620.  
  1621.     dc.w    $088,$0000        ;copjmp2
  1622.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1623. cprbck
  1624. sprdat
  1625.     dc.w    $ffff,$fffe
  1626.  
  1627. palette        ds.l    256        ;palette 24-bits, far out !
  1628. paltab        ds.w    256        ;palette cycle-tabel
  1629.  
  1630.     cnop    0,2
  1631. var    ds.b    $300    ;variabelen voor routines
  1632.  
  1633.     
  1634. ;    SECTION    10,CODE_C
  1635.         endc
  1636.  
  1637. ; this is the routine-source
  1638. ;**********************************************************************
  1639.  
  1640. ;    Input:
  1641. ;    a0=variabelen tabel
  1642. ;    d0=routinfo
  1643.  
  1644. ;    Output:
  1645. ;    a0=picture
  1646. ;    d1=copperlist
  1647.  
  1648.     SECTION    3,CODE
  1649.     cnop    0,8
  1650. rot
  1651. rotp
  1652.     ifd    ocs
  1653.     dc.l    'ROTO'
  1654.     endc
  1655.     ifnd    ocs
  1656.     dc.l    'ROTA'
  1657.     endc
  1658.     movem.l    d2-d7/a1-a6,-(sp)
  1659.  
  1660.     lea    ($dff000).l,a6    ;hardware
  1661.     lea    rot,a5        ;prog base
  1662.     ifd    rout
  1663.     move.l    #rotc,a2
  1664.     endc
  1665.     move.l    a2,rotchp-rot(a5)
  1666.     
  1667.     move.l    d0,d1
  1668.     divs    #256,d1
  1669.     and.l    #$ffff,d1
  1670.     move.l    d1,d2            ;fadespeed
  1671.     muls    #256,d1
  1672.     sub.l    d1,d0
  1673.  
  1674.     move.l    d0,d1
  1675.     divs    #16,d1
  1676.     and.l    #$ffff,d1
  1677.     move.l    d1,rotshp2-rot(a5)    ;sinusshape pic 2
  1678.     muls    #16,d1
  1679.     sub.l    d1,d0
  1680.  
  1681.     move.l    d0,rotshp1-rot(a5)    ;sinusshape pic 1
  1682.  
  1683.     move.l    var_cprbck(a0),a2
  1684.     move.l    a2,d1
  1685.     sub.l    #8,d1
  1686.  
  1687.     move.l    rotchp-rot(a5),a1
  1688.     add.l    #rotcop.1-rotc,a1        ;copperjump adres zetten
  1689.     add.l    rotbuf-rot(a5),a1
  1690.     move.w    d1,6(a1)
  1691.     swap    d1
  1692.     move.w    d1,2(a1)
  1693.  
  1694.     bsr    rotset
  1695.     move.l    d2,d0            ;fadespeed
  1696.     bsr    rotlop
  1697.     
  1698.     lea    rotpal1,a0                ;palette 1
  1699.     move.l    rotbuf2-rot(a5),d1            ;double buffering
  1700. ;    add.l    d1,a0
  1701. ;    eor.l    #rotpal2-rotpal1,rotbuf2-rot(a5)    ;double buffering
  1702. ;    sub.l    a0,a0
  1703.         
  1704.     move.l    rotchp-rot(a5),a1
  1705.     add.l    #rotcop.1-rotc,a1        ;copperlist
  1706.     add.l    rotbuf-rot(a5),a1
  1707.     eor.l    #rotcop.2-rotcop.1,rotbuf-rot(a5)
  1708.     move.l    a1,d1
  1709. ;    clr.l    d1
  1710.     movem.l    (sp)+,d2-d7/a1-a6
  1711.     rts
  1712.  
  1713. rotset
  1714.     movem.l    d0-d7/a0-a6,-(sp)
  1715.  
  1716.     tst.l    var_pic1(a0)        ;is there a picture ?
  1717.     beq    rotset.end
  1718.  
  1719.     clr.l    d2            ;$102 bitshift
  1720.  
  1721.     move.l    var_pic1(a0),a1        ;get picture
  1722.     lea    pic_raw(a1),a3        ;start picture planes
  1723.     move.l    a3,d1
  1724.     move.l    d1,d5            ;plane1 naar plane2 copieren
  1725.  
  1726.     clr.l    d3
  1727.     move.w    pic_wid(a1),d3        ;skip voor plane1
  1728.     
  1729.     move.l    rotshp1-rot(a5),d0    ;shape number
  1730.     muls    #4*4,d0
  1731.     lea    rotshptab,a2        ;sinus shape table
  1732.     lea    (a2,d0),a2
  1733.     bsr    rotget            ;a1,a2,d1=d2,d1
  1734.     exg.l    d1,d5            ;store pic1, get frsh pic1
  1735.     ror.l    #4,d2            ;store bitshift
  1736.  
  1737.     move.l    rotshp2-rot(a5),d0    ;shape number
  1738.     muls    #4*4,d0
  1739.     lea    4*4*16+rotshptab,a2    ;sinus shape table
  1740.     lea    (a2,d0),a2
  1741.  
  1742.     tst.l    var_pic2(a0)        ;is there double playfield ?
  1743.     bne    rotset.dpl
  1744.  
  1745.     add.l    d3,d1            ;get plane2 from pic1
  1746.     lsl.l    #1,d3            ;*2 double skip
  1747.     move.l    d3,d4            ;planeskip copieren
  1748.     bsr    rotget            ;a1,a2,d1=d2,d1
  1749.     bra    rotset.pln
  1750. rotset.dpl
  1751.     move.l    var_pic2(a0),a1        ;pic halen
  1752.     lea    pic_raw(a1),a3
  1753.     move.l    a3,d1            ;raw planes halen
  1754.     clr.l    d4            ;skip halen
  1755.     move.w    pic_wid(a1),d4
  1756.     bsr    rotget            ;a1,a2,d1=d2,d1
  1757.     
  1758. rotset.pln
  1759.     rol.l    #4,d2            ;get complete bitshift
  1760.     move.l    rotchp-rot(a5),a3
  1761.     add.l    #rotcop.1-rotc,a3
  1762.     add.l    rotbuf-rot(a5),a3
  1763.     move.w    d2,$0a(a3)
  1764.  
  1765.     ifd    ocs
  1766.     move.w    #3-1,d0
  1767.     endc
  1768.     ifnd    ocs
  1769.     move.w    #4-1,d0
  1770.     endc
  1771. rotset.a    
  1772.     move.w    d5,$12(a3)
  1773.     swap    d5
  1774.     move.w    d5,$0e(a3)
  1775.     swap    d5
  1776.  
  1777.     move.w    d1,$1a(a3)
  1778.     swap    d1
  1779.     move.w    d1,$16(a3)
  1780.     swap    d1
  1781.  
  1782.     add.l    #16,a3
  1783.     add.l    d3,d5
  1784.     add.l    d4,d1
  1785.     
  1786.     dbra    d0,rotset.a    
  1787.     bra    rotset.end
  1788.  
  1789. rotset.end
  1790.     movem.l    (sp)+,d0-d7/a0-a6
  1791.     rts
  1792.     
  1793.     ;a1    picture
  1794.     ;d1    rawplanes
  1795.     ;a2    sinusinfo
  1796.     
  1797. rotget
  1798.     movem.l    d3-d7/a0-a6,-(sp)
  1799.  
  1800.     lea    rotsin,a3
  1801.     
  1802.     move.l    (a2),d0            ;get current x-pos
  1803.     clr.l    d3
  1804.     move.w    (a3,d0),d3        ;get sinus value
  1805.  
  1806.     clr.l    d4
  1807.     move.w    pic_wid(a1),d4        ;pic width in bytes
  1808.     lsl.l    #3,d4            ;*8
  1809.  
  1810.     move.l    #vew_wid*8,d7
  1811.     btst    #15-8,pic_vew(a1)
  1812.     beq    rotget.bc
  1813.     move.l    #vew_wid*8*2,d7
  1814. rotget.bc
  1815.     cmp.w    d7,d4            ;smaller than view ?
  1816.     ble    rotget.ci3
  1817.  
  1818.     sub.l    d7,d4            ;-vewwidth
  1819.  
  1820.     cmp.w    #0,d4            ;<0 ?
  1821.     bge    rotget.ba
  1822.     clr.l    d4
  1823. rotget.ba
  1824.     muls    d4,d3
  1825.  
  1826.     ifd    ocs
  1827.     lsr.l    #8,d3            ;/1024
  1828.     lsr.l    #2,d3
  1829.     divs    #16,d3
  1830.     swap    d3
  1831.     move.w    #$f,d4
  1832.     sub.w    d3,d4
  1833.     or.w    d4,d2            ;bitshift $102
  1834.     endc
  1835.     
  1836.     ifnd    ocs
  1837.     lsr.l    #8,d3            ;/256
  1838.     lsr.l    #2,d3
  1839.     divs    #64,d3
  1840.     swap    d3
  1841.     move.w    #64-1,d4
  1842.     sub.w    d3,d4
  1843.  
  1844. ;    bfexts    d4{26:4},d6
  1845. ;    bfins    d6,d2{28:4}
  1846. ;    bfexts    d4{30:2},d6
  1847. ;    bfins    d6,d2{22:2}
  1848. ;    bfexts    d4{24:2},d6
  1849. ;    bfins    d6,d2{20:2}        ;bitshift $102
  1850.  
  1851.     bfexts    d4{26:2},d6
  1852.     bfins    d6,d2{20:2}
  1853.     bfexts    d4{28:4},d6
  1854.     bfins    d6,d2{28:4}
  1855.     endc
  1856.     
  1857.     clr.w    d3
  1858.     swap    d3
  1859.  
  1860.     ifd    ocs
  1861.     lsl.l    #1,d3            ;*2
  1862.     endc
  1863.     ifnd    ocs
  1864.     lsl.l    #3,d3            ;*8
  1865.     endc
  1866.  
  1867.     add.l    d3,d1            ;raw+x
  1868. rotget.ci3
  1869.     add.l    8(a2),d0        ;+ sinusadd
  1870.     cmp.l    #rotsin.e-rotsin,d0
  1871.     blt    rotget.bb
  1872.     sub.l    #rotsin.e-rotsin,d0
  1873. rotget.bb
  1874.     move.l    d0,(a2)            ;return position
  1875.     
  1876.     move.l    4(a2),d0        ;get current y-pos
  1877.     clr.l    d3
  1878.     move.w    (a3,d0),d3        ;get sinus value
  1879.  
  1880.     clr.l    d4
  1881.     move.w    pic_hgt(a1),d4        ;pic heigth
  1882.  
  1883.     move.l    #vew_hgt,d7
  1884.     cmp.b    #50,var_ntsc(a0)    ;ntsc check
  1885.     beq    rotget.pal
  1886.     sub.l    #56,d7
  1887. rotget.pal
  1888.  
  1889.     btst    #2,pic_vew(a1)
  1890.     beq    rotget.cc
  1891.     add.l    d7,d7
  1892. rotget.cc
  1893.     cmp.w    d7,d4            ;smaller than view ?
  1894.     ble    rotget.ci
  1895.     sub.l    d7,d4            ;-vewheigth
  1896.  
  1897.     cmp.w    #0,d4            ;<0 ?
  1898.     bge    rotget.ca
  1899.     clr.l    d4
  1900. rotget.ca
  1901.     muls    d4,d3
  1902.     lsr.l    #8,d3            ;/1024
  1903.     lsr.l    #2,d3
  1904.     
  1905.     clr.l    d4
  1906.     move.w    pic_wid(a1),d4        ;*width
  1907.     muls    pic_dpt(a1),d4        ;*depth
  1908.     muls    d4,d3
  1909.     
  1910.     add.l    d3,d1            ;raw+y
  1911. rotget.ci
  1912.     add.l    12(a2),d0        ;+ sinusadd
  1913.     cmp.l    #rotsin.e-rotsin,d0
  1914.     blt    rotget.c
  1915.     sub.l    #rotsin.e-rotsin,d0
  1916. rotget.c
  1917.     move.l    d0,4(a2)        ;return position
  1918.  
  1919.     movem.l    (sp)+,d3-d7/a0-a6
  1920.     rts
  1921.     
  1922. rotlop
  1923.     movem.l    d0-d7/a0-a6,-(sp)
  1924.  
  1925.     move.l    var_rottrg(a0),a4    ;opnieuw getriggerd ?
  1926.     tst.b    (a4)
  1927.     beq    rotlop.nonewset
  1928.     clr.b    (a4)
  1929.  
  1930.     clr.l    rotcolpos-rot(a5)    ;fade position
  1931.  
  1932.     move.l    var_cols1(a0),a1
  1933.     move.l    var_cols1+4(a0),a2
  1934.  
  1935.     cmp.l    #0,a1            ;picture ?
  1936.     beq    rotlop.nonewset
  1937.     cmp.l    #0,a2            ;picture ?
  1938.     beq    rotlop.nonewset
  1939.  
  1940.     cmp.l    a1,a2            ;zelfde ?
  1941.     beq    rotlop.nonewset
  1942.     
  1943.     move.w    4(a1),d1
  1944.     cmp.w    4(a2),d1        ;aantal kleuren gelijk ?
  1945.     bne    rotlop.nonewset
  1946.  
  1947.     cmp.w    #16-1,d1        ;aantal kleuren 16 ?
  1948.     bne    rotlop.nonewset
  1949.     move.w    #256-1,d1
  1950.         
  1951.     tst.w    d0            ;routinemode = 0 ?
  1952.     beq    rotlop.nonewset
  1953.     
  1954.     move.l    a2,rotcolset1-rot(a5)
  1955.     move.l    a1,rotcolset2-rot(a5)
  1956.     clr.l    rotcolnum-rot(a5)    ;aantal kleuren
  1957.     clr.l    rotcolspd-rot(a5)
  1958.     clr.l    rotcolpos-rot(a5)
  1959.     move.w    d1,2+rotcolnum-rot(a5)    ;aantal kleuren
  1960.     move.w    d0,2+rotcolspd-rot(a5)
  1961.     move.w    d0,2+rotcolpos-rot(a5)
  1962.     
  1963.     lea    rotpal1,a1
  1964.     move.w    d1,4(a1)
  1965.     lea    rotpal2,a1
  1966.     move.w    d1,4(a1)
  1967.  
  1968.     move.l    rotcolset2-rot(a5),a0    ;start palette
  1969.     lea    6(a0),a0
  1970.     lea    rotwrk1,a2
  1971.  
  1972.     rept    2            ;0
  1973.     move.l    (a0),(a2)+
  1974.     move.l    4(a0),(a2)+
  1975.     move.l    (a0),(a2)+
  1976.     move.l    4(a0),(a2)+
  1977.     move.l    8(a0),(a2)+
  1978.     move.l    12(a0),(a2)+
  1979.     move.l    8(a0),(a2)+
  1980.     move.l    12(a0),(a2)+
  1981.     endr
  1982.  
  1983.     rept    2
  1984.     move.l    16(a0),(a2)+
  1985.     move.l    20(a0),(a2)+
  1986.     move.l    16(a0),(a2)+
  1987.     move.l    20(a0),(a2)+
  1988.     move.l    24(a0),(a2)+
  1989.     move.l    28(a0),(a2)+
  1990.     move.l    24(a0),(a2)+
  1991.     move.l    28(a0),(a2)+
  1992.     endr
  1993.     
  1994.     rept    2
  1995.     move.l    (a0),(a2)+
  1996.     move.l    4(a0),(a2)+
  1997.     move.l    (a0),(a2)+
  1998.     move.l    4(a0),(a2)+
  1999.     move.l    8(a0),(a2)+
  2000.     move.l    12(a0),(a2)+
  2001.     move.l    8(a0),(a2)+
  2002.     move.l    12(a0),(a2)+
  2003.     endr
  2004.  
  2005.     rept    2
  2006.     move.l    16(a0),(a2)+
  2007.     move.l    20(a0),(a2)+
  2008.     move.l    16(a0),(a2)+
  2009.     move.l    20(a0),(a2)+
  2010.     move.l    24(a0),(a2)+
  2011.     move.l    28(a0),(a2)+
  2012.     move.l    24(a0),(a2)+
  2013.     move.l    28(a0),(a2)+
  2014.     endr
  2015.     
  2016.     rept    2            ;1
  2017.     move.l    32(a0),(a2)+
  2018.     move.l    36(a0),(a2)+
  2019.     move.l    32(a0),(a2)+
  2020.     move.l    36(a0),(a2)+
  2021.     move.l    40(a0),(a2)+
  2022.     move.l    44(a0),(a2)+
  2023.     move.l    40(a0),(a2)+
  2024.     move.l    44(a0),(a2)+
  2025.     endr
  2026.  
  2027.     rept    2
  2028.     move.l    48(a0),(a2)+
  2029.     move.l    52(a0),(a2)+
  2030.     move.l    48(a0),(a2)+
  2031.     move.l    52(a0),(a2)+
  2032.     move.l    56(a0),(a2)+
  2033.     move.l    60(a0),(a2)+
  2034.     move.l    56(a0),(a2)+
  2035.     move.l    60(a0),(a2)+
  2036.     endr
  2037.             
  2038.     rept    2
  2039.     move.l    32(a0),(a2)+
  2040.     move.l    36(a0),(a2)+
  2041.     move.l    32(a0),(a2)+
  2042.     move.l    36(a0),(a2)+
  2043.     move.l    40(a0),(a2)+
  2044.     move.l    44(a0),(a2)+
  2045.     move.l    40(a0),(a2)+
  2046.     move.l    44(a0),(a2)+
  2047.     endr
  2048.  
  2049.     rept    2
  2050.     move.l    48(a0),(a2)+
  2051.     move.l    52(a0),(a2)+
  2052.     move.l    48(a0),(a2)+
  2053.     move.l    52(a0),(a2)+
  2054.     move.l    56(a0),(a2)+
  2055.     move.l    60(a0),(a2)+
  2056.     move.l    56(a0),(a2)+
  2057.     move.l    60(a0),(a2)+
  2058.     endr
  2059.             
  2060.     rept    2            ;2
  2061.     move.l    (a0),(a2)+
  2062.     move.l    4(a0),(a2)+
  2063.     move.l    (a0),(a2)+
  2064.     move.l    4(a0),(a2)+
  2065.     move.l    8(a0),(a2)+
  2066.     move.l    12(a0),(a2)+
  2067.     move.l    8(a0),(a2)+
  2068.     move.l    12(a0),(a2)+
  2069.     endr
  2070.  
  2071.     rept    2
  2072.     move.l    16(a0),(a2)+
  2073.     move.l    20(a0),(a2)+
  2074.     move.l    16(a0),(a2)+
  2075.     move.l    20(a0),(a2)+
  2076.     move.l    24(a0),(a2)+
  2077.     move.l    28(a0),(a2)+
  2078.     move.l    24(a0),(a2)+
  2079.     move.l    28(a0),(a2)+
  2080.     endr
  2081.     
  2082.     rept    2
  2083.     move.l    (a0),(a2)+
  2084.     move.l    4(a0),(a2)+
  2085.     move.l    (a0),(a2)+
  2086.     move.l    4(a0),(a2)+
  2087.     move.l    8(a0),(a2)+
  2088.     move.l    12(a0),(a2)+
  2089.     move.l    8(a0),(a2)+
  2090.     move.l    12(a0),(a2)+
  2091.     endr
  2092.  
  2093.     rept    2
  2094.     move.l    16(a0),(a2)+
  2095.     move.l    20(a0),(a2)+
  2096.     move.l    16(a0),(a2)+
  2097.     move.l    20(a0),(a2)+
  2098.     move.l    24(a0),(a2)+
  2099.     move.l    28(a0),(a2)+
  2100.     move.l    24(a0),(a2)+
  2101.     move.l    28(a0),(a2)+
  2102.     endr
  2103.     
  2104.     rept    2            ;3
  2105.     move.l    32(a0),(a2)+
  2106.     move.l    36(a0),(a2)+
  2107.     move.l    32(a0),(a2)+
  2108.     move.l    36(a0),(a2)+
  2109.     move.l    40(a0),(a2)+
  2110.     move.l    44(a0),(a2)+
  2111.     move.l    40(a0),(a2)+
  2112.     move.l    44(a0),(a2)+
  2113.     endr
  2114.  
  2115.     rept    2
  2116.     move.l    48(a0),(a2)+
  2117.     move.l    52(a0),(a2)+
  2118.     move.l    48(a0),(a2)+
  2119.     move.l    52(a0),(a2)+
  2120.     move.l    56(a0),(a2)+
  2121.     move.l    60(a0),(a2)+
  2122.     move.l    56(a0),(a2)+
  2123.     move.l    60(a0),(a2)+
  2124.     endr
  2125.             
  2126.     rept    2
  2127.     move.l    32(a0),(a2)+
  2128.     move.l    36(a0),(a2)+
  2129.     move.l    32(a0),(a2)+
  2130.     move.l    36(a0),(a2)+
  2131.     move.l    40(a0),(a2)+
  2132.     move.l    44(a0),(a2)+
  2133.     move.l    40(a0),(a2)+
  2134.     move.l    44(a0),(a2)+
  2135.     endr
  2136.  
  2137.     rept    2
  2138.     move.l    48(a0),(a2)+
  2139.     move.l    52(a0),(a2)+
  2140.     move.l    48(a0),(a2)+
  2141.     move.l    52(a0),(a2)+
  2142.     move.l    56(a0),(a2)+
  2143.     move.l    60(a0),(a2)+
  2144.     move.l    56(a0),(a2)+
  2145.     move.l    60(a0),(a2)+
  2146.     endr
  2147.  
  2148.  
  2149.     lea    rotwrk1,a0
  2150.     lea    pal1r,a1
  2151.     lea    pal1g,a2
  2152.     lea    pal1b,a3
  2153.     bsr    getcol
  2154.  
  2155.  
  2156.     move.l    rotcolset1-rot(a5),a0
  2157.     lea    6(a0),a0
  2158.     lea    rotwrk1,a2
  2159.  
  2160.     rept    2            ;0
  2161.     move.l    (a0),(a2)+
  2162.     move.l    (a0),(a2)+
  2163.     move.l    4(a0),(a2)+
  2164.     move.l    4(a0),(a2)+
  2165.     endr
  2166.  
  2167.     rept    2
  2168.     move.l    8(a0),(a2)+
  2169.     move.l    8(a0),(a2)+
  2170.     move.l    12(a0),(a2)+
  2171.     move.l    12(a0),(a2)+
  2172.     endr
  2173.     
  2174.     rept    2
  2175.     move.l    (a0),(a2)+
  2176.     move.l    (a0),(a2)+
  2177.     move.l    4(a0),(a2)+
  2178.     move.l    4(a0),(a2)+
  2179.     endr
  2180.  
  2181.     rept    2
  2182.     move.l    8(a0),(a2)+
  2183.     move.l    8(a0),(a2)+
  2184.     move.l    12(a0),(a2)+
  2185.     move.l    12(a0),(a2)+
  2186.     endr
  2187.     
  2188.     rept    2            ;1
  2189.     move.l    16(a0),(a2)+
  2190.     move.l    16(a0),(a2)+
  2191.     move.l    20(a0),(a2)+
  2192.     move.l    20(a0),(a2)+
  2193.     endr
  2194.  
  2195.     rept    2
  2196.     move.l    24(a0),(a2)+
  2197.     move.l    24(a0),(a2)+
  2198.     move.l    28(a0),(a2)+
  2199.     move.l    28(a0),(a2)+
  2200.     endr
  2201.     
  2202.     rept    2
  2203.     move.l    16(a0),(a2)+
  2204.     move.l    16(a0),(a2)+
  2205.     move.l    20(a0),(a2)+
  2206.     move.l    20(a0),(a2)+
  2207.     endr
  2208.  
  2209.     rept    2
  2210.     move.l    24(a0),(a2)+
  2211.     move.l    24(a0),(a2)+
  2212.     move.l    28(a0),(a2)+
  2213.     move.l    28(a0),(a2)+
  2214.     endr
  2215.     
  2216.     rept    2            ;2
  2217.     move.l    (a0),(a2)+
  2218.     move.l    (a0),(a2)+
  2219.     move.l    4(a0),(a2)+
  2220.     move.l    4(a0),(a2)+
  2221.     endr
  2222.  
  2223.     rept    2
  2224.     move.l    8(a0),(a2)+
  2225.     move.l    8(a0),(a2)+
  2226.     move.l    12(a0),(a2)+
  2227.     move.l    12(a0),(a2)+
  2228.     endr
  2229.     
  2230.     rept    2
  2231.     move.l    (a0),(a2)+
  2232.     move.l    (a0),(a2)+
  2233.     move.l    4(a0),(a2)+
  2234.     move.l    4(a0),(a2)+
  2235.     endr
  2236.  
  2237.     rept    2
  2238.     move.l    8(a0),(a2)+
  2239.     move.l    8(a0),(a2)+
  2240.     move.l    12(a0),(a2)+
  2241.     move.l    12(a0),(a2)+
  2242.     endr
  2243.     
  2244.     rept    2            ;3
  2245.     move.l    16(a0),(a2)+
  2246.     move.l    16(a0),(a2)+
  2247.     move.l    20(a0),(a2)+
  2248.     move.l    20(a0),(a2)+
  2249.     endr
  2250.  
  2251.     rept    2
  2252.     move.l    24(a0),(a2)+
  2253.     move.l    24(a0),(a2)+
  2254.     move.l    28(a0),(a2)+
  2255.     move.l    28(a0),(a2)+
  2256.     endr
  2257.     
  2258.     rept    2
  2259.     move.l    16(a0),(a2)+
  2260.     move.l    16(a0),(a2)+
  2261.     move.l    20(a0),(a2)+
  2262.     move.l    20(a0),(a2)+
  2263.     endr
  2264.  
  2265.     rept    2
  2266.     move.l    24(a0),(a2)+
  2267.     move.l    24(a0),(a2)+
  2268.     move.l    28(a0),(a2)+
  2269.     move.l    28(a0),(a2)+
  2270.     endr
  2271.     
  2272.     rept    2            ;4
  2273.     move.l    32(a0),(a2)+
  2274.     move.l    32(a0),(a2)+
  2275.     move.l    36(a0),(a2)+
  2276.     move.l    36(a0),(a2)+
  2277.     endr
  2278.  
  2279.     rept    2
  2280.     move.l    40(a0),(a2)+
  2281.     move.l    40(a0),(a2)+
  2282.     move.l    44(a0),(a2)+
  2283.     move.l    44(a0),(a2)+
  2284.     endr
  2285.     
  2286.     rept    2
  2287.     move.l    32(a0),(a2)+
  2288.     move.l    32(a0),(a2)+
  2289.     move.l    36(a0),(a2)+
  2290.     move.l    36(a0),(a2)+
  2291.     endr
  2292.  
  2293.     rept    2
  2294.     move.l    40(a0),(a2)+
  2295.     move.l    40(a0),(a2)+
  2296.     move.l    44(a0),(a2)+
  2297.     move.l    44(a0),(a2)+
  2298.     endr
  2299.     
  2300.     rept    2            ;5
  2301.     move.l    48(a0),(a2)+
  2302.     move.l    48(a0),(a2)+
  2303.     move.l    52(a0),(a2)+
  2304.     move.l    52(a0),(a2)+
  2305.     endr
  2306.  
  2307.     rept    2
  2308.     move.l    56(a0),(a2)+
  2309.     move.l    56(a0),(a2)+
  2310.     move.l    60(a0),(a2)+
  2311.     move.l    60(a0),(a2)+
  2312.     endr
  2313.     
  2314.     rept    2
  2315.     move.l    48(a0),(a2)+
  2316.     move.l    48(a0),(a2)+
  2317.     move.l    52(a0),(a2)+
  2318.     move.l    52(a0),(a2)+
  2319.     endr
  2320.  
  2321.     rept    2
  2322.     move.l    56(a0),(a2)+
  2323.     move.l    56(a0),(a2)+
  2324.     move.l    60(a0),(a2)+
  2325.     move.l    60(a0),(a2)+
  2326.     endr
  2327.     
  2328.     rept    2            ;6
  2329.     move.l    32(a0),(a2)+
  2330.     move.l    32(a0),(a2)+
  2331.     move.l    36(a0),(a2)+
  2332.     move.l    36(a0),(a2)+
  2333.     endr
  2334.  
  2335.     rept    2
  2336.     move.l    40(a0),(a2)+
  2337.     move.l    40(a0),(a2)+
  2338.     move.l    44(a0),(a2)+
  2339.     move.l    44(a0),(a2)+
  2340.     endr
  2341.     
  2342.     rept    2
  2343.     move.l    32(a0),(a2)+
  2344.     move.l    32(a0),(a2)+
  2345.     move.l    36(a0),(a2)+
  2346.     move.l    36(a0),(a2)+
  2347.     endr
  2348.  
  2349.     rept    2
  2350.     move.l    40(a0),(a2)+
  2351.     move.l    40(a0),(a2)+
  2352.     move.l    44(a0),(a2)+
  2353.     move.l    44(a0),(a2)+
  2354.     endr
  2355.     
  2356.     rept    2            ;7
  2357.     move.l    48(a0),(a2)+
  2358.     move.l    48(a0),(a2)+
  2359.     move.l    52(a0),(a2)+
  2360.     move.l    52(a0),(a2)+
  2361.     endr
  2362.  
  2363.     rept    2
  2364.     move.l    56(a0),(a2)+
  2365.     move.l    56(a0),(a2)+
  2366.     move.l    60(a0),(a2)+
  2367.     move.l    60(a0),(a2)+
  2368.     endr
  2369.     
  2370.     rept    2
  2371.     move.l    48(a0),(a2)+
  2372.     move.l    48(a0),(a2)+
  2373.     move.l    52(a0),(a2)+
  2374.     move.l    52(a0),(a2)+
  2375.     endr
  2376.  
  2377.     rept    2
  2378.     move.l    56(a0),(a2)+
  2379.     move.l    56(a0),(a2)+
  2380.     move.l    60(a0),(a2)+
  2381.     move.l    60(a0),(a2)+
  2382.     endr
  2383.     
  2384.  
  2385.  
  2386.  
  2387.  
  2388.  
  2389.  
  2390.  
  2391.             
  2392.  
  2393.     lea    rotwrk1,a0
  2394.     lea    pal2r,a1
  2395.     lea    pal2g,a2
  2396.     lea    pal2b,a3
  2397.     bsr    getcol
  2398.  
  2399.     move.l    rotcolspd-rot(a5),d3    ;fade speed
  2400.     move.l    rotcolnum-rot(a5),d2    ;aantal kleuren
  2401.     
  2402.     move.l    a5,-(sp)
  2403.  
  2404.     lea    pal1r,a0    ;calculate add-step
  2405.     lea    pal2r,a1
  2406.     lea    pal1g,a2
  2407.     lea    pal2g,a3
  2408.     lea    pal1b,a4
  2409.     lea    pal2b,a5
  2410.  
  2411. getadd.a
  2412.     move.l    (a0)+,d0
  2413.     move.l    (a1)+,d1
  2414.     sub.l    d0,d1
  2415.     divs    d3,d1
  2416.     ext.l    d1
  2417.     move.l    d1,-4(a1)
  2418.  
  2419.     move.l    (a2)+,d0
  2420.     move.l    (a3)+,d1
  2421.     sub.l    d0,d1
  2422.     divs    d3,d1
  2423.     ext.l    d1
  2424.     move.l    d1,-4(a3)
  2425.  
  2426.     move.l    (a4)+,d0
  2427.     move.l    (a5)+,d1
  2428.     sub.l    d0,d1
  2429.     divs    d3,d1
  2430.     ext.l    d1
  2431.     move.l    d1,-4(a5)
  2432.  
  2433.     dbra    d2,getadd.a
  2434.  
  2435.     move.l    (sp)+,a5
  2436.  
  2437. rotlop.nonewset
  2438.     tst.l    rotcolpos-rot(a5)    ;fade position
  2439.     beq    rotlop.end
  2440.     sub.l    #1,rotcolpos-rot(a5)    ;fade position
  2441.  
  2442.     lea    rotpal1,a6        ;palette 1
  2443.     move.l    rotbuf2-rot(a5),d1    ;double buffering
  2444.     add.l    d1,a6
  2445.     add.l    #6,a6
  2446.  
  2447.     move.l    rotcolnum-rot(a5),d4    ;aantal kleuren
  2448.  
  2449.     move.l    a5,-(sp)
  2450.  
  2451.     lea    pal1r,a0
  2452.     lea    pal2r,a1
  2453.     lea    pal1g,a2
  2454.     lea    pal2g,a3
  2455.     lea    pal1b,a4
  2456.     lea    pal2b,a5
  2457.  
  2458. getpal.a
  2459.     move.l    (a0)+,d0
  2460.     move.l    (a1)+,d1
  2461.     add.l    d1,d0
  2462.     move.l    d0,-4(a0)
  2463.     lsr.l    #7,d0
  2464.  
  2465.     ifnd    ocs
  2466.     bfexts    d0{24:4},d1
  2467.     bfins    d1,-2(a6){20:4}
  2468.     bfexts    d0{28:4},d1
  2469.     bfins    d1,(a6){20:4}
  2470.     endc
  2471.     
  2472.     ifd    ocs
  2473.     lsl.w    #4,d0
  2474.     and.w    #$f00,d0
  2475.     move.w    d0,d2
  2476.     endc
  2477.     
  2478.     move.l    (a2)+,d0
  2479.     move.l    (a3)+,d1
  2480.     add.l    d1,d0
  2481.     move.l    d0,-4(a2)
  2482.     lsr.l    #7,d0
  2483.  
  2484.     ifnd    ocs
  2485.     bfexts    d0{24:4},d1
  2486.     bfins    d1,-2(a6){24:4}
  2487.     bfexts    d0{28:4},d1
  2488.     bfins    d1,(a6){24:4}
  2489.     endc
  2490.     
  2491.     ifd    ocs
  2492.     and.w    #$0f0,d0
  2493.     or.w    d0,d2
  2494.     endc
  2495.     
  2496.     move.l    (a4)+,d0
  2497.     move.l    (a5)+,d1
  2498.     add.l    d1,d0
  2499.     move.l    d0,-4(a4)
  2500.     lsr.l    #7,d0
  2501.  
  2502.     ifnd    ocs
  2503.     bfexts    d0{24:4},d1
  2504.     bfins    d1,-2(a6){28:4}
  2505.     bfexts    d0{28:4},d1
  2506.     bfins    d1,(a6){28:4}
  2507.     add.l    #4,a6
  2508.     endc
  2509.  
  2510.     ifd    ocs
  2511.     lsr.w    #4,d0
  2512.     and.w    #$00f,d0
  2513.     or.w    d0,d2
  2514.     move.w    d2,(a6)+
  2515.     endc
  2516.     
  2517.     dbra    d4,getpal.a
  2518.  
  2519.     move.l    (sp)+,a5
  2520.  
  2521. rotlop.end
  2522.     movem.l    (sp)+,d0-d7/a0-a6
  2523.     rts
  2524.  
  2525. getcol
  2526.     movem.l    d0-d7/a0-a6,-(sp)
  2527.     move.l    rotcolnum-rot(a5),d0    ;aantal kleuren
  2528. getcol.a
  2529.     clr.l    d1            ;get red
  2530.  
  2531.     ifnd    ocs
  2532.     bfexts    (a0){4:4},d2
  2533.     bfins    d2,d1{24:4}
  2534.     bfexts    (a0){20:4},d2
  2535.     bfins    d2,d1{28:4}
  2536.     endc
  2537.  
  2538.     ifd    ocs
  2539.     move.w    (a0)+,d2
  2540.     move.w    d2,d1
  2541.     and.w    #$f00,d1
  2542.     lsr.w    #4,d1
  2543.     endc
  2544.  
  2545.     lsl.l    #7,d1
  2546.     move.l    d1,(a1)
  2547.     add.l    #4,a1
  2548.  
  2549.     clr.l    d1            ;get green
  2550.  
  2551.     ifnd    ocs
  2552.     bfexts    (a0){8:4},d2
  2553.     bfins    d2,d1{24:4}
  2554.     bfexts    (a0){24:4},d2
  2555.     bfins    d2,d1{28:4}
  2556.     endc
  2557.     
  2558.     ifd    ocs
  2559.     move.w    d2,d1
  2560.     and.w    #$0f0,d1
  2561.     endc
  2562.  
  2563.     lsl.l    #7,d1
  2564.     move.l    d1,(a2)
  2565.     add.l    #4,a2
  2566.  
  2567.     clr.l    d1            ;get blue
  2568.  
  2569.     ifnd    ocs
  2570.     bfexts    (a0){12:4},d2
  2571.     bfins    d2,d1{24:4}
  2572.     bfexts    (a0){28:4},d2
  2573.     bfins    d2,d1{28:4}
  2574.     endc
  2575.     
  2576.     ifd    ocs
  2577.     move.w    d2,d1
  2578.     and.w    #$00f,d1
  2579.     lsl.w    #4,d1
  2580.     endc
  2581.  
  2582.     lsl.l    #7,d1
  2583.     move.l    d1,(a3)
  2584.     add.l    #4,a3
  2585.  
  2586.     ifnd    ocs
  2587.     add.l    #4,a0
  2588.     endc
  2589.         
  2590.     dbra    d0,getcol.a
  2591.     movem.l    (sp)+,d0-d7/a0-a6
  2592.     rts
  2593.  
  2594. rotchp        dc.l    0
  2595. rotbuf2        dc.l    0
  2596. rotcolset1    dc.l    0
  2597. rotcolset2    dc.l    0
  2598. rotcolspd    dc.l    0
  2599. rotcolnum    dc.l    0
  2600. rotcolpos    dc.l    0
  2601.  
  2602. rotbuf    dc.l    0
  2603. rotshp1    dc.l    0
  2604. rotshp2    dc.l    0
  2605.  
  2606.     ;    posx    posy    spdx    spdy
  2607. rotshptab
  2608.     rept    2
  2609.     dc.l    0,    0,    0,    0    ;0 stil
  2610.     dc.l    0,    0,    2,    0    ;1 -
  2611.     dc.l    0,    0,    0,    2    ;2 |
  2612.     dc.l    0,    180*2,    2,    2    ;3 o
  2613.     dc.l    180*2,    0,    2,    4    ;4 (X)
  2614.     dc.l    0,    180*2,    4,    2    ;5 8
  2615.     dc.l    0,    180*2,    4,    6    ;6 weird
  2616.     dc.l    0,    0,    0,    0    ;7
  2617.     dc.l    0,    0,    0,    0    ;8
  2618.     dc.l    0,    0,    0,    0    ;9
  2619.     dc.l    0,    0,    0,    0    ;10
  2620.     dc.l    0,    0,    0,    0    ;11
  2621.     dc.l    0,    0,    0,    0    ;12
  2622.     dc.l    0,    0,    0,    0    ;13
  2623.     dc.l    0,    0,    0,    0    ;14
  2624.     dc.l    0,    0,    0,    0    ;15
  2625.     endr
  2626.         
  2627. rotsin
  2628.        dc.w       512,516,521,525,530,534,539,543,548,552,557,561
  2629.        dc.w       565,570,574,579,583,588,592,596,601,605,610,614
  2630.        dc.w       618,623,627,631,636,640,644,649,653,657,661,666
  2631.        dc.w       670,674,678,683,687,691,695,699,703,708,712,716
  2632.        dc.w       720,724,728,732,736,740,744,748,752,756,760,764
  2633.        dc.w       768,771,775,779,783,787,790,794,798,801,805,809
  2634.        dc.w       812,816,820,823,827,830,834,837,840,844,847,851
  2635.        dc.w       854,857,861,864,867,870,873,876,880,883,886,889
  2636.        dc.w       892,895,898,901,903,906,909,912,915,917,920,923
  2637.        dc.w       925,928,931,933,936,938,941,943,945,948,950,952
  2638.        dc.w       955,957,959,961,963,965,967,969,971,973,975,977
  2639.        dc.w       979,981,982,984,986,987,989,991,992,994,995,997
  2640.        dc.w       998,999,1001,1002,1003,1004,1006,1007,1008,1009,1010,1011
  2641.        dc.w       1012,1013,1014,1014,1015,1016,1017,1017,1018,1019,1019,1020
  2642.        dc.w       1020,1021,1021,1021,1022,1022,1022,1023,1023,1023,1023,1023
  2643.        dc.w       1023,1023,1023,1023,1023,1023,1022,1022,1022,1021,1021,1021
  2644.        dc.w       1020,1020,1019,1019,1018,1017,1017,1016,1015,1014,1014,1013
  2645.        dc.w       1012,1011,1010,1009,1008,1007,1006,1004,1003,1002,1001,999
  2646.        dc.w       998,997,995,994,992,991,989,987,986,984,982,981
  2647.        dc.w       979,977,975,973,971,969,967,965,963,961,959,957
  2648.        dc.w       955,952,950,948,945,943,941,938,936,933,931,928
  2649.        dc.w       925,923,920,917,915,912,909,906,903,901,898,895
  2650.        dc.w       892,889,886,883,880,876,873,870,867,864,861,857
  2651.        dc.w       854,851,847,844,840,837,834,830,827,823,820,816
  2652.        dc.w       812,809,805,801,798,794,790,787,783,779,775,771
  2653.        dc.w       768,764,760,756,752,748,744,740,736,732,728,724
  2654.        dc.w       720,716,712,708,703,699,695,691,687,683,678,674
  2655.        dc.w       670,666,661,657,653,649,644,640,636,631,627,623
  2656.        dc.w       618,614,610,605,601,596,592,588,583,579,574,570
  2657.        dc.w       565,561,557,552,548,543,539,534,530,525,521,516
  2658.        dc.w       512,508,503,499,494,490,485,481,476,472,467,463
  2659.        dc.w       459,454,450,445,441,436,432,428,423,419,414,410
  2660.        dc.w       406,401,397,393,388,384,380,375,371,367,363,358
  2661.        dc.w       354,350,346,341,337,333,329,325,321,316,312,308
  2662.        dc.w       304,300,296,292,288,284,280,276,272,268,264,260
  2663.        dc.w       257,253,249,245,241,237,234,230,226,223,219,215
  2664.        dc.w       212,208,204,201,197,194,190,187,184,180,177,173
  2665.        dc.w       170,167,163,160,157,154,151,148,144,141,138,135
  2666.        dc.w       132,129,126,123,121,118,115,112,109,107,104,101
  2667.        dc.w       99,96,93,91,88,86,83,81,79,76,74,72
  2668.        dc.w       69,67,65,63,61,59,57,55,53,51,49,47
  2669.        dc.w       45,43,42,40,38,37,35,33,32,30,29,27
  2670.        dc.w       26,25,23,22,21,20,18,17,16,15,14,13
  2671.        dc.w       12,11,10,10,9,8,7,7,6,5,5,4
  2672.        dc.w       4,3,3,3,2,2,2,1,1,1,1,1
  2673.        dc.w       1,1,1,1,1,1,2,2,2,3,3,3
  2674.        dc.w       4,4,5,5,6,7,7,8,9,10,10,11
  2675.        dc.w       12,13,14,15,16,17,18,20,21,22,23,25
  2676.        dc.w       26,27,29,30,32,33,35,37,38,40,42,43
  2677.        dc.w       45,47,49,51,53,55,57,59,61,63,65,67
  2678.        dc.w       69,72,74,76,79,81,83,86,88,91,93,96
  2679.        dc.w       99,101,104,107,109,112,115,118,121,123,126,129
  2680.        dc.w       132,135,138,141,144,148,151,154,157,160,163,167
  2681.        dc.w       170,173,177,180,184,187,190,194,197,201,204,208
  2682.        dc.w       212,215,219,223,226,230,234,237,241,245,249,253
  2683.        dc.w       256,260,264,268,272,276,280,284,288,292,296,300
  2684.        dc.w       304,308,312,316,321,325,329,333,337,341,346,350
  2685.        dc.w       354,358,363,367,371,375,380,384,388,393,397,401
  2686.        dc.w       406,410,414,419,423,428,432,436,441,445,450,454
  2687.        dc.w       459,463,467,472,476,481,485,490,494,499,503,508
  2688.        dc.w       512    
  2689. rotsin.e
  2690.         cnop    0,8
  2691. rotwrk1        ds.l    256
  2692.  
  2693. pal1r        ds.l    256
  2694. pal1g        ds.l    256
  2695. pal1b        ds.l    256
  2696.  
  2697. pal2r        ds.l    256
  2698. pal2g        ds.l    256
  2699. pal2b        ds.l    256
  2700.  
  2701. rotpal1
  2702.         dc.l    'PALE'
  2703.         dc.w    0
  2704.         ifnd    ocs
  2705.         ds.l    256
  2706.         endc
  2707.         ifd    ocs
  2708.         ds.w    256
  2709.         endc
  2710. rotpal2        
  2711.         dc.l    'PALE'
  2712.         dc.w    0
  2713.         ifnd    ocs
  2714.         ds.l    256
  2715.         endc
  2716.         ifd    ocs
  2717.         ds.w    256
  2718.         endc
  2719.  
  2720. rotpal_l    equ    rotpal2-rotpal1
  2721. rotp.e
  2722.  
  2723.  
  2724.     SECTION    4,CODE_c
  2725.     cnop    0,8
  2726. rotc
  2727.     ifd    ocs
  2728.     dc.l    'ROTO'
  2729.     endc
  2730.     ifnd    ocs
  2731.     dc.l    'ROTA'
  2732.     endc
  2733.     rts
  2734.     
  2735.     cnop    0,8
  2736. rotcop.1
  2737.     dc.w    $0080,$0000,$0082,$0000
  2738.     dc.w    $0102,$0000
  2739.  
  2740.     dc.w    $00e0,$0000,$00e2,$0000    ;1
  2741.     dc.w    $00e4,$0000,$00e6,$0000    ;2
  2742.     dc.w    $00e8,$0000,$00ea,$0000    ;3
  2743.     dc.w    $00ec,$0000,$00ee,$0000    ;4
  2744.     dc.w    $00f0,$0000,$00f2,$0000    ;5
  2745.     dc.w    $00f4,$0000,$00f6,$0000    ;6
  2746.     ifnd    ocs
  2747.     dc.w    $00f8,$0000,$00fa,$0000    ;7
  2748.     dc.w    $00fc,$0000,$00fe,$0000    ;8
  2749.     endc
  2750.  
  2751.     dc.w    $0100,$0010
  2752.     dc.w    $0088,$0000
  2753.     dc.w    $ffff,$fffe
  2754.  
  2755. rotcop.2
  2756.     dc.w    $0080,$0000,$0082,$0000
  2757.     dc.w    $0102,$0000
  2758.  
  2759.     dc.w    $00e0,$0000,$00e2,$0000    ;1
  2760.     dc.w    $00e4,$0000,$00e6,$0000    ;2
  2761.     dc.w    $00e8,$0000,$00ea,$0000    ;3
  2762.     dc.w    $00ec,$0000,$00ee,$0000    ;4
  2763.     dc.w    $00f0,$0000,$00f2,$0000    ;5
  2764.     dc.w    $00f4,$0000,$00f6,$0000    ;6
  2765.     ifnd    ocs
  2766.     dc.w    $00f8,$0000,$00fa,$0000    ;7
  2767.     dc.w    $00fc,$0000,$00fe,$0000    ;8
  2768.     endc
  2769.  
  2770.     dc.w    $0100,$0010
  2771.     dc.w    $0088,$0000
  2772.     dc.w    $ffff,$fffe
  2773. rotc.e
  2774.  
  2775. rot.e
  2776.  
  2777. ;**********************************************************************
  2778.  
  2779. ;and here are the incbin-files....
  2780.  
  2781.         ifd    rout
  2782.         cnop    0,8
  2783. rotincpic1
  2784.         ifd    ocs
  2785.         incbin    'w:effect/circles512_l4.pic'
  2786.         endc
  2787.         ifnd    ocs
  2788.         incbin    'w:effectaga/act_16.bru'
  2789.         endc
  2790.         cnop    0,8
  2791. rotincpic2
  2792.         ifnd    ocs
  2793.         incbin    'w:effectaga/caveman_16.bru'
  2794.         endc
  2795.         endc
  2796.         
  2797.